javascript:等待异步完成

时间:2015-09-17 04:16:49

标签: javascript

在执行下一个之前,你如何等待asynch调用comlete?



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

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

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




1 个答案:

答案 0 :(得分: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");
});

使用promises可能是最好的主意,但使用它们可能有点单调乏味。使用bluebirdQ等第三方库可以更轻松地使用它们。