gpt4 book ai didi

javascript - 异步函数作为参数传递而不是 Promise,显示不同的结果

转载 作者:行者123 更新时间:2023-12-02 22:19:14 24 4
gpt4 key购买 nike

我正在使用 PWA,cache.open 方法采用 Promise 作为参数。而正常的代码流程如下所示:

event.waitUntil(
caches.open().then().catch();
);
// output: as expected

我将参数更改为显式 promise 和异步函数。 Promise 的工作方式与预期相同,但异步函数却不然。

为了 promise

event.waitUntil(
new Promise(resolve => {
console.log('test');
resolve();
})
);

// output: as expected

对于异步函数

event.waitUntill(async () => await console.log('test'));

// output: no output

我想知道为什么 async 函数没有按预期工作,即使 async 本身返回了一个 promise 。

最佳答案

正如 Mark 在评论中提到的,异步函数在调用时返回 Promise。它们本身并不是 promise 。为了使其工作,您需要调用该异步函数。您可以将异步函数视为 promise 生成器。这应该可以使它工作:

const asyncFn = async () => await console.log('test')
event.waitUntill(asyncFn());

关于javascript - 异步函数作为参数传递而不是 Promise,显示不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59291845/

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