在实现服务工作者订阅时,我注意到来自Visual Studio Code的消息,可以将以下函数转换为async
函数:
这是我最初的同步代码。
/**
* Returns the subscription if it is present, or nothing
*/
function getUserSubscription() {
return navigator.serviceWorker.ready
.then(function (serviceWorker) {
return serviceWorker.pushManager.getSubscription();
})
.then(function (pushSubscription) {
return pushSubscription;
});
}
我不确定如何将其转换为async
函数。我以为我理解了要点,就像转换这样的东西一样:
fetchData()
.then(process())
.then(processAgain());
对此:
const response1 = await fetchData();
const response2 = await process(response1);
const response = await processAgain(response2);
但是用这种技术转换函数没有运气。
答案 0 :(得分:0)
使用函数前面的async
关键字。然后每个await
Promise
并返回结果。
async function getUserSubscription() {
const serviceWorker = await navigator.serviceWorker.ready;
const pushSubscription = await serviceWorker.pushManager.getSubscription();
return pushSubscription;
}