【发布时间】:2017-04-15 07:31:37
【问题描述】:
我正在做这样的事情,其中第一个函数依赖于第二个。
let findOrg = () => {
return new Promise((resolve, reject) => {
db.organization.find({
where: data
})
.then(org => {
return resolve(org);
}).catch(err => {
reject(err);
});
}); };
let createOrg = org => {
return new Promise((resolve, reject) => {
if (org) {
return resolve(org);
}
db.organization.build(data)
.save()
.then((org) => {
return resolve(org);
}).catch(err => {
reject(err);
});
}); };
findOrg()
.then(org => { //going to find org
return createOrg(org); //then going to make org
}).then(newOrg => {
res.data(mapper.toModel(newOrg)); //then mapping
}).catch(err => {
return res.failure(err);
});
在上述函数 findOrg 和 createOrg 中创建了新的 promise (ES6)
我的问题是——
1. 我们如何在Bluebirdpromise 库中解决这个问题(如果一个函数依赖于另一个函数,则按顺序),如
async.waterfall([
function(){},
function(){}],
function(){})
- 这里创建了 2 个承诺。我有什么办法吗
【问题讨论】:
-
什么是数据?它没有被赋予价值......
-
我认为你可以通过按预期使用承诺来完成 async.waterfall 所做的事情,而无需额外的复杂性。
a().then(b).then(c).catch(...)
标签: javascript node.js bluebird