gpt4 book ai didi

javascript - 等待深度函数调用的深度异步等待结果?

转载 作者:行者123 更新时间:2023-11-28 05:40:52 25 4
gpt4 key购买 nike

我正在使用async await通过babel-plugin-transform-async-to-generator .

在顶层,我正在等待函数响应。然后还有另外两个异步函数func1func2func2异步检索 https://www.google.com 的内容.

以下脚本返回:

go() called
func1() called
finished
func2() called
func2() called
func2() called

我怎么只能console.log('finished')所有调用执行成功后?是否可以不将它们显式返回为 Promise使用解析/拒绝?

这个例子被大大简化了。我想做的涉及我也等待的递归函数调用

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")
}

最佳答案

我仍然不确定如何为递归调用执行此操作,但会为其创建一个单独的问题/示例。

上面的例子可以通过使用for..of而不是forEach来修复。内部函数结果不能被 awaited。

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")

for (let item of arr) {
await func2()
}
}

async function func2() {
var res = await rp('https://www.google.com')
console.log("func2() called")
}

关于javascript - 等待深度函数调用的深度异步等待结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38937325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com