将同步函数转换为异步

时间:2020-09-22 19:33:04

标签: javascript promise async-await es6-promise

在实现服务工作者订阅时,我注意到来自Visual Studio Code的消息,可以将以下函数转换为async函数:

enter image description here

这是我最初的同步代码。

/**
 * 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);

但是用这种技术转换函数没有运气。

1 个答案:

答案 0 :(得分:0)

使用函数前面的async关键字。然后每个await Promise并返回结果。

async function getUserSubscription() {
  const serviceWorker = await navigator.serviceWorker.ready;
  const pushSubscription = await serviceWorker.pushManager.getSubscription();
  return pushSubscription;
}