如何将变量传递给Node.js中的异步函数的回调?

时间:2018-06-07 15:27:29

标签: javascript node.js promise

下面我有一些示例代码,描述了我想要完成的另一项任务。

在示例代码中,我有一个名为outer_func(multiplier)的辅助函数,我将从另一个模块调用。该辅助函数接收单个参数multiplier

然而,在使用此参数之前,我需要异步获取数据点数组。此函数不需要使用乘法器,在收到数组之前我无法调用后续函数。所以我想知道如何最好地将乘数传递给嵌套在.then get_array()回调中的函数。

var fn2 = function asyncMultiplyBy2(v){ // sample async action
    return new Promise(resolve => setTimeout(() => resolve(v * 2), 100));
}

var fn3 = function asyncMultiplyBy3(v, w /*I want to pass multiplier here*/){ // sample async action
    return new Promise(resolve => setTimeout(() => resolve(v * w), 100));
}

function get_array() {
  return new Promise(resolve => setTimeout(() => resolve([1, 2, 3, 4, 5]), 100));
}

function outer_func(multiplier) {
  get_array().then(function(array) {
    var actions = array.map(fn2);
    var results = Promise.all(actions);

    results.then(function(newArray) {
      var finalActions = newArray.map(fn3);
      var finalResults = Promise.all(finalActions);
      console.log(multiplier)  //undefined, but I would like to use this variable here

      finalResults.then(function(finalArray) {
        console.log(finalArray);
      })
    })
  })
}

outer_func(3);

编辑: 我在fn3添加了一条评论,要求我传递乘数。

0 个答案:

没有答案