在这里,我希望一个接一个地解决这个承诺。 Q.when
似乎是价值观的好包装。如果我已经拥有一系列Promise,除了使用.then(function(){return next();})
之外,还有一种紧凑的方法吗?
Here is my JSBin.以及相关的JavaScript:
function wrap(v) {
var defer = Q.defer();
window.setTimeout(function() {
console.log('okay, fine!');
defer.resolve(v);
}, 3000);
return defer.promise;
}
/*
wrap(1)
.then(function() {
return wrap(3);
})
.then(function(v) {
console.log(v);
});
*/
/* map result is an array of promise
when using reduce, it will resolve one by one.
*/
[1, 3, 4, 5].map(wrap)
.reduce(Q.when, Q(undefined))
.then(function(v) {
console.log(done);
});
答案 0 :(得分:0)
我在Q&#39的github回购中找到了这个。它似乎在reduce
函数中我们仍然可以使用.then
。
Q.when
不应该与promise一起使用。
function wrap(v) {
var defer = Q.defer();
window.setTimeout(function() {
document.body.innerHTML += ('okay, fine! here is ' + v + '<br/>');
defer.resolve(v);
}, 3000);
return defer.promise;
}
[1, 3, 4, 5]
.reduce(function(soFar, f) {
return soFar
.then(function(v) {
return wrap(f);
});
}, Q(undefined));
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/q.js/1.0.1/q.js"></script>
&#13;