等待异步功能结束

时间:2015-09-16 09:34:13

标签: javascript asynchronous

我自己的功能A和上传文件的第三方异步功能B,现在我想在执行A期间调用函数B,然后等待B函数结束。

我可以检查函数是否由标志var F完成,问题是如果我使用下面的代码,浏览器会进入无限循环(可能是因为它在循环中忙,无法更新F)。 / p>

function A(){
    // ...
    B();
    while(F);
    // ...
}

function B(){
    // ...
}

我无法将功能A拆分为2个子功能

抱歉我的英语很差

1 个答案:

答案 0 :(得分:0)

JavaScript始终在一个线程中运行。这意味着,您无法进行繁忙的等待,或者您将阻止整个脚本。你应该使用一些异步编程。就像为B函数提供回调或让B函数返回承诺一样。

回调方法如下所示:

B(function(err, result) {
    // some code after B completes
});

函数B必须在完成后调用回调。

使用promises时,您的代码就像:

B().then(function(result) {
        // result handling
    }, 
    function(err) {
        // error handling
    });

Promise非常方便,但需要使用某些第三方库,因为它们不是JS的一部分。事实上,使用承诺可能会有所不同,具体取决于库(即jqueryq中的承诺)