亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

上一個功能完成后調用一個函數

上一個功能完成后調用一個函數

撒科打諢 2019-08-30 15:53:00
我有以下JavaScript代碼:$('a.button').click(function(){    if (condition == 'true'){        function1(someVariable);        function2(someOtherVariable);    }    else {        doThis(someVariable);    }});如何確保function2僅在function1完成后調用?
查看完整描述

3 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

指定匿名回調,并使function1接受它:


$('a.button').click(function(){

    if (condition == 'true'){

        function1(someVariable, function() {

          function2(someOtherVariable);

        });

    }

    else {

        doThis(someVariable);

    }

});



function function1(param, callback) {

  ...do stuff

  callback();


查看完整回答
反對 回復 2019-08-30
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

這個答案使用promises了ECMAScript 6標準的JavaScript功能。如果您的目標平臺不支持promises,請使用PromiseJs對其進行填充。

Promise是一種新的(并且更好)處理JavaScript中的異步操作的方法:


$('a.button').click(function(){

    if (condition == 'true'){

        function1(someVariable).then(function() {

            //this function is executed after function1

            function2(someOtherVariable);

        });

    }

    else {

        doThis(someVariable);

    }

});



function function1(param, callback) {

    return new Promise(function (fulfill, reject){

        //do stuff

        fulfill(result); //if the action succeeded

        reject(error); //if the action did not succeed

    });

對于這個簡單的示例來說,這似乎是一個重要的開銷,但對于更復雜的代碼,它遠比使用回調更好。您可以使用多個then語句輕松鏈接多個異步調用:


function1(someVariable).then(function() {

    function2(someOtherVariable);

}).then(function() {

    function3();

});

您還可以輕松地包裝jQuery deferrds(從$.ajax調用返回):


Promise.resolve($.ajax(...params...)).then(function(result) {

    //whatever you want to do after the request

});

正如@charlietfl所說,實現接口jqXHR返回的對象。所以實際上沒有必要將它包裝成a ,它可以直接使用:$.ajax()PromisePromise


$.ajax(...params...).then(function(result) {

    //whatever you want to do after the request

});


查看完整回答
反對 回復 2019-08-30
  • 3 回答
  • 0 關注
  • 452 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號