gpt4 book ai didi

javascript - 除非显式覆盖,否则 'async' 函数是否立即返回resolve(undefined)?

转载 作者:行者123 更新时间:2023-11-28 17:03:03 24 4
gpt4 key购买 nike

通过覆盖异步函数的解析(未定义)的立即返回,我的意思是使用:

return new Promise(resolve, reject)... resolve(variableName)

此外,如果这确实是默认行为,是否有其他方法可以覆盖它?

编辑:感谢@Quentin,有了新的理解。以下如有错误,请指正。

当您调用像 async function1() {... 这样的异步函数而不等待时:

function1将阻塞(仅使用await或then“异步”任务)并将运行直至完成。

function1 不会立即返回任何内容(即空的、未定义的或待处理的 Promise)。

如果没有明确的 return 语句,function1 将返回 Promise {undefined}。

如果有 await返回新的 Promise..,则 function1 返回 Promise {ending },因为这些会将任务添加到事件循环微任务队列中。

如果使用 return varName,function1 就会用一个值履行/拒绝 promise 。

最佳答案

async 函数将运行并返回一个 promise 。

当函数结束时,它将用通常的返回值来解决该 promise 。 (如果您在内部使用 await,那么只有在 async 函数解冻并到达末尾之前,promise 才会被解析。)

没有 return 语句的函数的默认返回值为 undefined,因此,如果您不包含 return 语句,它将返回一个以 undefined 解析的 Promise。

如果您返回一个 promise ,那么它将返回一个用该 promise 解决的 promise ,该 promise 将正常采用。

如果您返回其他内容,则 promise 将使用该值来解决。

关于javascript - 除非显式覆盖,否则 'async' 函数是否立即返回resolve(undefined)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56802935/

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