我在使用async/await
语法时挣扎于服务工作者的承诺
以下情况:我收到了推送通知,并希望处理点击事件。如果我使用" old"使用then
和catch
的语法我可以在客户端列表上进行迭代,并对其执行某些操作。如果我使用async/await
的首选方式,则无法执行任何操作。
self.addEventListener("notificationclick", event => {
// is working
event.waitUntil(self.clients.matchAll().then(clientList => {
console.log(clientList);
}));
// is not working
event.waitUntil(async () => {
const clientList = await self.clients.matchAll();
console.log(clientList);
});
});
答案 0 :(得分:3)
感谢@Crice和@Keith,
waitUntil需要一个promise作为参数而不是一个函数。所以这是async / await风格的工作示例:
self.addEventListener("notificationclick", event =>
{
event.waitUntil(getClients());
});
async function getClients()
{
const clientList = await self.clients.matchAll();
console.log(clientList);
}