我可以像这样保持代码干净并获取-paramFromA& paramFromB? 这里的所有函数都返回新的Promise
var a = helper.getAccountPromise(tokens);
var b = a.then(helper.getFundingPromise)
var c = b.then(helper.createCampignPromise(paramFromA, paramFromB))
更新: 让我们说我会做
var a = helper.getAccountPromise(tokens);
var b = a.then(helper.getFundingPromise)
var c = helper.createCampignPromise(a, b))
....
createCapmaignPromise(a,b){
// do I wait for a here? a.then ?
// how do I extract the response here - console.log(a.response) ?
// same for b
}
答案 0 :(得分:0)
.then()总是使用一个参数调用,这是与promise一起解决的值。
我假设paramFromA和paramFromB表示Promises“a”和“b”的返回值,因此在你的链“c”中只能访问paramFromB。
你可以 var c = Promise.all(a,b).then(/ *两个项目数组在这里作为单个参数传递* /) 在像bluebird这样的promise库中,你有一个.spread()方法而不是.then(),它将从Promise.all()返回的数组扩展为两个参数,但你也可以使用ES6 ... spread operator。
如果你需要promises顺序运行并将返回值从a传递给c,你要么必须从b传递它,要么将它存储在.then()中的闭包之外的变量中;