【发布时间】:2015-10-21 00:09:31
【问题描述】:
我有这段代码,我希望这两个 Promise 顺序运行,结果应该是这样的:
a progress: 20
a progress: 40
a progress: 60
a progress: 80
a progress: 100
a resolve: a
b progress: 20
b progress: 40
b progress: 60
b progress: 80
b progress: 100
b resolve: b
但我明白了:
a progress: 20
b progress: undefined
a progress: 40
b progress: undefined
a progress: 60
b progress: undefined
a progress: 80
b progress: undefined
a progress: 100
a resolve: a
b progress: undefined
b progress: 20
b progress: 40
b progress: 60
b progress: 80
b progress: 100
b resolve: b
这是我的全部代码:
var a = function(){
return q.Promise(function(resolve, reject, notify){
var percentage = 0;
var interval = setInterval(function() {
percentage += 20;
notify(percentage);
if (percentage === 100) {
resolve("a");
clearInterval(interval);
}
}, 500);
});
};
var b = function(){
return q.Promise(function(resolve, reject, notify){
var percentage = 0;
var interval = setInterval(function() {
percentage += 20;
notify(percentage);
if (percentage === 100) {
resolve("b");
clearInterval(interval);
}
}, 500);
});
};
a().then(function(res) {
console.log('a resolve: '+res);
return b();
},
errorHandler,
function(progress){
console.log('a progress: '+progress);
})
//call b()
.then(function(res){
console.log('b resolve: '+res);
},
errorHandler,
function(progress){
console.log('b progress: '+progress);
});
function errorHandler(err) {
console.log('Error Handler:', err);
}
【问题讨论】:
标签: javascript node.js promise q