Я использую async await
через babel-plugin-transform-async-to-generator
.Ждать глубоких асинхронных ожиданий от глубоких вызовов функций?
На верхнем уровне я жду ответа функции. Затем есть еще две асинхронные функции func1
и func2
. func2
асинхронно извлекает содержимое https://www.google.com
.
Следующие возвращает сценарий:
go() called
func1() called
finished
func2() called
func2() called
func2() called
Как только console.log('finished')
после всего вызова выполняются успешно? Возможно ли, если он не будет возвращать их явно как Promise
s с помощью разрешения/отклонения?
Этот пример значительно упрощен. То, что я пытаюсь сделать, включает в себя рекурсивные вызовы функций я ждать, а
const rp = require('request-promise')
go()
async function go() {
console.log("go() called")
await func1([1,2,3])
console.log("finished the script")
}
async function func1(arr) {
console.log("func1() called")
arr.forEach(async function(element) {
await func2()
})
}
async function func2() {
var res = await rp('https://www.google.com')
console.log("func2() called")
}
'console.log (« завершен скрипт »)' не ждет 'await func1 ([1,2,3])'? Вы также можете использовать 'Promise.all()' – guest271314
Можете ли вы иметь две 'await' в одной и той же функции? Если да, возможно, вам нужно удалить ключевое слово 'async' из цикла' forEach'. (Я никогда не использовал async/await) – Cristy
@ guest271314 В моем исходном коде есть рекурсивные вызовы функций, в которых один вызов зависит от результата первого. – Hedge