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