2015-09-17 306 views
-1

在執行下一步之前,您如何等待異步調用進行組合?javascript:等待異步完成

function fx1() { 
 
     setTimeout(function() { 
 
      alert("1"); 
 
     }, 2000); 
 

 
     fx1().done(function() { 
 
      fx2(); 
 
     } 
 
    } 
 

 
    function fx2() { 
 
     alert("2"); 
 
    }

+0

只需使用一個數組作爲隊列,用要執行的函數填充數組,然後讓處理函數運行show。 – SquareCat

回答

0

您可以手動提供一個回調函數:

function f1(callback) { 
    setTimeout(function() { 
    alert("1"); 
    callback(); 
    }, 2000); 

f1(function() { 
    alert("2"); 
}); 

或使用的承諾:

var promise = new Promise(function(resolve, reject) { 
    setTimeout(function() { 
    alert("1"); 
    resolve(); 
    }, 2000); 
}; 

promise.then(function() { 
    alert("2"); 
}); 

使用的承諾可能是最好的的想法,但與他們合作可能有點乏味。使用第三方庫(如bluebirdQ)可以使他們更容易地工作。