JavaScript如何使用event.waitUntil()等待异步函数调用

run_the_race

学习JavaScript时,建议您使用async/,await因为它比更具可读性.then,我同意。不幸的是,当谈到PWA服务人员时,async似乎已经被遗忘了。

尝试为服务工作者使用异步样式创建安装功能时:

const cacheVersion = "v1";
const cacheAssets = [
    "/",
    "/index.html",
    "/static/img/logo.svg",
];

async function install(version, assets) {
    const cache = await caches.open(version);
    console.log("Doing stuff....");
}

self.addEventListener("install", (event) => {
    console.log("Service Worker INSTALL START");
    event.waitUntil(install, cacheVersion, cacheAssets); // <--- Does not call install()
    console.log("Service Worker INSTALL COMPLETE");
});

install功能永远不会运行。如果我更改此行:

event.waitUntil(install, cacheVersion, cacheAssets);

install(cacheVersion, cacheAssets);

然后运行该行,但没有等待,从而导致问题。

如何使用它event.waitUntil来调用异步函数并等待它?

对我event.waitUntil来说就像await,那么当JS中似乎没有其他功能时,为什么会有这个奇怪的特殊功能阻塞主循环呢?对我来说似乎很奇怪。

TJ人群

install不会被调用是因为您不调用它。waitUntil接受承诺,而不是功能。一个async功能是不是一个承诺,那就是一个函数返回一个承诺。

调用函数并将其返回的promise传递给waitUntil

event.waitUntil(install(cacheVersion, cacheAssets));
// −−−−−−−−−−−−−−−−−−−−^−−−−−−−−−−−−−−−−−−−−−−−−−^

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何不等待就调用异步函数?

如何调用异步函数

如何调用异步JavaScript函数?

等待使用call调用的异步函数或通过Babel应用

如何在同步函数中等待JavaScript中的异步调用?

测试异步异步等待JavaScript函数

如果您正在等待异步函数调用,是否需要使用Expect.assertions()?

JavaScript ES7-在页面顶部调用异步函数,在页面底部等待

使用多个异步/等待调用构建对象

如何使异步等待工作于调用数据库的函数

如何确保Lambda函数通过await等待调用异步函数?

如何进行多个异步等待调用

javascript:异步函数问题(异步等待循环)

Javascript异步/等待回调函数

如何等待rust中的异步函数调用列表?

如何使用onSnapshot回调获取一个异步的React函数调用firebase.firestore.set等待?

使用异步/等待计数来自3个不同循环的错误,这些循环在每次迭代时调用异步函数

如何同步调用异步(等待)方法?

如何阻止和等待异步的,基于回调的Python函数调用

为什么对函数使用异步/等待会花费更长的时间,然后直接调用相同的函数呢?

如何同时调用异步函数并等待所有回调?

在继续执行更改 DOM 的函数之前,如何等待异步数据库调用解决?

如何使用函数使用异步等待

Javascript - 在从函数返回之前等待异步调用完成,不使用回调

React Jest 如何测试正在调用的外部异步等待函数?

异步函数如何等待内部异步函数的回调?

无法等待 Javascript 中的异步调用

使用嵌套的异步等待函数调用

如何使用 NodeJS 异步等待多个异步 MongoDB findOne 函数