在承诺库Q,你可以做以下顺序链的承诺:
var items = ['one', 'two', 'three'];
var chain = Q();
items.forEach(function (el) {
chain = chain.then(foo(el));
});
return chain;
但是,以下不$ Q工作:
var items = ['one', 'two', 'three'];
var chain = $q();
items.forEach(function (el) {
chain = chain.then(foo(el));
});
return chain;
这是行不通的。它同时执行它们全部。我知道这一点,因为我执行一系列需要大约500个MS的请求。看着我的网络流量,他们都同时出去(但是按顺序)。 – FlavorScape 2015-03-19 23:45:03
@FlavorScape,确保foo是一个工厂 - 查看我的编辑。 – redgeoff 2015-03-20 00:21:00
啊,确定它是一个工厂,这样它就不会立即在调用堆栈中执行,当我们构建链时,对吧? – FlavorScape 2015-03-20 00:50:44