JavaScript中的异步/等待功能

Promise对象表示异步操作的最终完成(或失败)及其结果值。异步等待功能,运算符按承诺工作。

异步/等待功能可帮助我们在幕后执行异步任务的同时编写完全同步的代码。

例如,假设我们有一个异步函数,该函数返回一个promise-

// Promise that resolves to 100 after 2sec
function getHundred() {
   return new Promise(resolve => {
      setTimeout(() => {
         resolve(100);
      },    2000);
   });
}

我们想在函数中使用它,但是我们需要等待返回值。使用回调,我们可以通过以下方式做到这一点-

function useGetHundred() {
   getHundred().then((value) => {
      console.log(value);
   })
}

但是我们不必要地需要创建回调以对返回的数据执行。我们可以改为使用异步等待来简化此代码-

示例

// Declare an async function. When this function is called, it'll also return a Promise
//使所有异步调用同步
async function useGetHundredAsync() {
   //等待getHundred承诺解析,然后将其值存储在value中。
   let value = await getHundred();
   console.log(value)
}

输出结果

100