【发布时间】:2014-07-09 06:06:06
【问题描述】:
我对 Promise 有点陌生,并且被困在下面的练习中。
我有一个值数组,我想对每个值执行一个异步调用。 在回调中,我想对第一次调用的结果执行另一个调用。
基本上,我的挫败感如下: 执行顺序应该是 '1x2x3x' 但顺序是 '123xxx'
换句话说,当第一个承诺的子/嵌套承诺尚未完成时,循环已经进入下一次迭代..
var values = ["1", "2", "3"];
function do(val) {
var deferred = Q.defer();
asyncCall(val)
.then( function( response ) {
console.log(val);
asyncCall(response)
.then( function ( response ) {
console.log('x');
deferred.resolve(true)
});
});
return deferred.promise;
}
var result = do(values[0]);
values.forEach( function(f) {
result = result.then(do(f));
}
可能有一个简单的解决方案,但我坚持下去。
【问题讨论】:
标签: javascript loops nested promise