node.js \从链中获取参数,并保持线性

时间:2016-06-25 17:27:42

标签: node.js promise es6-promise

我可以像这样保持代码干净并获取-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 

}

1 个答案:

答案 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()中的闭包之外的变量中;