У меня довольно простая проблема, которую я, похоже, не могу решить. Я также не мог найти что-либо в google/stackoverflow (возможно, я просто использую неправильные ключевые слова?)Создание обещаний динамически
У меня есть массив значений, и я бы хотел вызвать определенную функцию для каждого отдельного элемента в этом массиве. Трудность в том, что функция возвращает обещание и должна быть вызвана только раз, когда обещание было разрешено.
Если бы я сделал это так, я бы не ждать обещанного быть решен до следующего вызова функции:
let paramerterArr = ['a','b','c','d','e','f']
paramerterArr.forEach((currentParam) => {
let promise = mySpecialFunction(currentParam)
})
Если бы я сделал это так, я должен был бы написать много избыточного кода и я не могу просто изменить массив:
let paramerterArr = ['a','b','c','d','e','f']
mySpecialFunction(paramerterArr[0]).then(()=> {
return mySpecialFunction(paramerterArr[1])
}).then(()=> {
return mySpecialFunction(paramerterArr[2])
}).then(()=> {
return mySpecialFunction(paramerterArr[3])
}).then(()=> {
return mySpecialFunction(paramerterArr[4])
}).then(()=> {
return mySpecialFunction(paramerterArr[5])
})
и даже если бы я сделал это так, я не мог просто изменить массив:
Если бы я сделал это так Я бы придется писать много лишнего кода, и я не могу просто изменить массив:
let paramerterArr = ['a','b','c','d','e','f']
let currentPos = 0
mySpecialFunction(currentPos).then(()=> {
currentPos++
return mySpecialFunction(currentPos)
}).then(()=> {
currentPos++
return mySpecialFunction(currentPos)
}).then(()=> {
currentPos++
return mySpecialFunction(currentPos)
}).then(()=> {
currentPos++
return mySpecialFunction(currentPos)
}).then(()=> {
currentPos++
return mySpecialFunction(currentPos)
})
Я просто не могу думать о умный способ сделать это ...
Может быть кто-то из вас есть идея , это было бы прекрасно.
Смотрите здесь - http://stackoverflow.com/documentation/javascript/231/promises/5917/reduce- a-array-to-chain-promises # t = 201612101336270481763 –