如何在javascript中使用aync/await?

如何在javascript中使用aync/await?,javascript,async-await,Javascript,Async Await,如何在javascript中使用async/await 我该怎么做 有什么需要帮助的吗 异步/等待函数的目的是简化行为 同步使用承诺,并在 一组承诺。就像承诺类似于结构化的承诺一样 回调、异步/等待类似于组合生成器和 承诺 请参见此示例: function resolveAfter2Seconds(x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000);

如何在javascript中使用async/await

我该怎么做

有什么需要帮助的吗

异步/等待函数的目的是简化行为 同步使用承诺,并在 一组承诺。就像承诺类似于结构化的承诺一样 回调、异步/等待类似于组合生成器和 承诺

请参见此示例:

function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

async function add1(x) {
  var a = resolveAfter2Seconds(20);
  var b = resolveAfter2Seconds(30);
  return x + await a + await b;
}

add1(10).then(v => {
  console.log(v);  // prints 60 after 2 seconds.
});

async function add2(x) {
  var a = await resolveAfter2Seconds(20);
  var b = await resolveAfter2Seconds(30);
  return x + a + b;
}

add2(10).then(v => {
  console.log(v);  // prints 60 after 4 seconds.
});
返回承诺的API将产生承诺链,并将函数拆分为许多部分。考虑下面的代码:

function getProcessedData(url) {
  return downloadData(url) // returns a promise
    .catch(e => {
      return downloadFallbackData(url); // returns a promise
    })
    .then(v => {
      return processDataInWorker(v); // returns a promise
    });
}
它可以用一个异步函数重写,如下所示:

async function getProcessedData(url) {
  let v;
  try {
    v = await downloadData(url); 
  } catch(e) {
    v = await downloadFallbackData(url);
  }
  return processDataInWorker(v);
}

很抱歉让您失望,但async/Wait并不能消除承诺。它包含了它们。您使用的是哪家供应商的运行时实现?您的运行时似乎支持async/await,那么您的问题是什么?我的问题就在那里,我想要一个真正的比较示例,所以我得到了答案。