将同步函数转换为异步函数
Converting a synchronous function to be async
当我实现 service worker 订阅时,我注意到来自 Visual Studio 代码的消息,以下函数可以转换为 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);
但我没有运气使用这种技术转换我的函数。
在函数前面使用async
关键字。然后 await
每个 Promise
和 return 结果。
async function getUserSubscription() {
const serviceWorker = await navigator.serviceWorker.ready;
const pushSubscription = await serviceWorker.pushManager.getSubscription();
return pushSubscription;
}
当我实现 service worker 订阅时,我注意到来自 Visual Studio 代码的消息,以下函数可以转换为 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);
但我没有运气使用这种技术转换我的函数。
在函数前面使用async
关键字。然后 await
每个 Promise
和 return 结果。
async function getUserSubscription() {
const serviceWorker = await navigator.serviceWorker.ready;
const pushSubscription = await serviceWorker.pushManager.getSubscription();
return pushSubscription;
}