С ES2016 у нас теперь есть обещания, и это здорово. К сожалению, функциональность очень минималистична, и нет ничего похожего на серию или водопад, как доступно в пакете асинхронных программ. Если есть пакет, предоставляющий эту функцию для обещаний или как люди обычно справляются с этими вариантами использования?Последовательное выполнение функций, возвращающих обещания
1
A
ответ
5
Чтобы последовательно выполнять множество функций, возвращающее обещание можно использовать Array.prototype.reduce
:
let final = functions.reduce((prev, f) => prev.then(f), Promise.resolve());
«Исходный» аргумент Promise.resolve()
есть семена цепи обещаний, так как в противном случае (если передается массив, содержащий только одна функция) callback .reduce
никогда не вызывается.
1
Большая часть этой функциональности уже существует (или будет существовать) на языке:
- Выполнить кучу действий одновременно и получить обещание для массива результатов:
Promise.all()
- Выполнить кучу действий и получите обещание для первого, которое разрешает/отклоняет:
Promise.race()
- Запускайте кучу обещаний серийно: используйте
reduce()
, как и в другом ответе, или используйте протокол асинхронной итерации.
Смежные вопросы
- 1. Выполнение вызовов функций, возвращающих обещания чистых
- 2. Последовательное выполнение обещания
- 3. Выполнение последовательности функций, возвращающих будущее последовательно
- 4. Невозможно реализовать Последовательное выполнение искровых функций
- 5. Передача параметров функциям, возвращающих обещания в цепочке
- 6. Последовательное выполнение запросов
- 7. Массив функций, возвращающих bool
- 8. Последовательное выполнение тестов пакетов
- 9. Вызываемое последовательное выполнение
- 10. tkinter последовательное выполнение заказа
- 11. angularjs не последовательное выполнение
- 12. Последовательное выполнение в node.js
- 13. UNIX последовательное выполнение файлов
- 14. последовательное выполнение JQuery Defers
- 15. HTML5 Последовательное выполнение
- 16. Последовательное выполнение Javascript
- 17. Последовательное выполнение javascript
- 18. Последовательное выполнение js
- 19. Последовательное выполнение таймера качания
- 20. Bluebird: выполнить последовательность функций, возвращающих обещание
- 21. Последовательное выполнение кода nodejs с запросом mongodb
- 22. Наследование функций, возвращающих общие типы
- 23. Построение списка функций, возвращающих строки
- 24. Поиск функций, возвращающих определенный тип
- 25. Если инструкция и последовательное выполнение
- 26. последовательное выполнение фоновых процессов unix
- 27. Может pthread_join() вызывать последовательное выполнение?
- 28. JBehave - последовательное выполнение через GivenStories
- 29. Ruby - как обеспечить последовательное выполнение
- 30. TestNG Последовательное выполнение тестовых групп
Вы запрашиваете библиотеку обещаний? – evolutionxbox
Это то, что '.then' для – Paul
@evolutionxbox, если это путь: да – doberkofler