【发布时间】:2014-12-24 17:27:43
【问题描述】:
如果使用蓝鸟,我怎样才能一个接一个地运行任务? 我有一个任务列表,每个任务都取决于前一个任务的结果,但这些任务可能是异步作业。以下代码不起作用,我应该使用 promise.all 还是其他函数? “then”链让我感到困惑,f2 直接运行而不是等待 f1 完成(而且我也不知道如何“解决”f1)
var Promise = require("bluebird");
function f1(p1){
console.log("init value or f2 return:"+p1);
var p = Promise.resolve();
setTimeout(function(){
var r = "aysnc result";
// how can i notify next step when a async operation done?
// there is no p.resolve function
},1000)
return p;
}
function f2(p1){
console.log("f1 said:"+p1);
return "f2 result";
}
var p = Promise.resolve("init value")
.then(f1)
.then(f2)
.then(f1)
.done(function(result){
console.log("f3 result:"+result);
})
【问题讨论】:
标签: node.js asynchronous promise bluebird