Как передать переменную в обратный вызов асинхронной функции в Node.js? - PullRequest
0 голосов
/ 07 июня 2018

Ниже у меня есть пример кода, который изображает другую задачу, которую я пытаюсь выполнить.

В примере кода у меня есть вспомогательная функция с именем 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, где я хотел бы передать множитель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...