2

我有两个函数,我们称它们为 functionA 和 functionB

如果我按如下方式调用这些函数,则每个函数内部都是 XHR 调用以下载文件

functionA();
functionB();

它们都将执行,但是 functionB 可以在 functionA 之前完成很多次(由于使用 functionA 下载的文件很大。但这会破坏我的应用程序的功能,我希望仅在 functionA 完全完成后才触发 functionB下载其数据。

现在对我来说最明显的答案是简单地将对functionB的调用放在functionA的XHR调用中,但由于我的代码设置方式(commonJS sutff ...),我不能这样做

有没有办法基本上强制 functionA 完成自身并在 functionB 开始之前返回?

4

2 回答 2

5

您可以使用回调,这是一个示例。它基本上传递functionBfunctionA然后functionB在结束时调用functionA

var functionA = function(cb) {
    //do some stuff
    cb();
};
var functionB = function() {
    //do some stuff
};
functionA(functionB);

此外,如果您使用 google javascript 回调,您会发现许多关于它们的不同文章。足以让你忙于阅读一段时间。

于 2013-06-18T01:37:00.047 回答
0

您还可以查看 async.js 之类的库。

这些库将承诺的概念引入您的代码中,并减少所有异步回调的混乱。

https://github.com/caolan/async#readme

http://www.html5rocks.com/en/tutorials/async/deferred/

于 2013-06-18T03:53:36.450 回答