将同步函数转换为异步函数

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;
}