async await

async/await

asyncES7的与异步操作有关的关键字,其返回一个Promise对象,await操作符用于等待一个Promise对象,它只能在异步函数async function内部使用。async/await的目的是简化使用多个promise时的同步行为,并对一组Promises执行某些操作。正如Promises类似于结构化回调,async/await更像结合了generatorspromises

async

语法

async function name([param[, param[, ... param]]]) { statements }
  • name: 函数名称。
  • param: 要传递给函数的参数的名称。
  • statements: 函数体语句。

async函数返回一个Promise对象,可以使用then方法添加回调函数,返回的Promise对象会运行执行resolve异步函数的返回结果,如果抛出异常则运行拒绝reject

实例

async function asyncPromise(v) {
  return v;
}

asyncPromise(1)
  .then((v) => {
    console.log(v);
  })
  .catch((e) => {
    console.log(e);
  });

await

async一般是配合await指令使用的,该指令会暂停异步函数的执行,并等待Promise执行,然后继续执行异步函数,并返回结果。若Promise处理异常rejectedawait表达式会把Promise的异常原因抛出。另外,如果await操作符后的表达式的值不是一个Promise,则返回该值本身。

实例

function promise() {
  return new Promise(function (resolve, reject) {
    var rand = Math.random() * 2;
    setTimeout(function () {
      resolve(`solve ${rand}`);
    }, 1000);
  });
}

(async function asyncPromise() {
  var result = await promise();
  console.log(result);
})();

// 捕捉异常
function promise() {
  return new Promise(function (resolve, reject) {
    throw new Error(`reject`);
  });
}

(async function asyncPromise() {
  var result = await promise();
  console.log(result);
})().catch((e) => {
  console.log(e);
});

// 非promise对象直接返回该值本身
function notPromise() {
  return 1;
}

(async function asyncPromise() {
  var result = await notPromise();
  console.log(result);
})();

  转载请注明: 24K博客 async await

 上一篇
手动实现AJAX 手动实现AJAX
AjaxAjax在浏览器是通过XMLHttpRequest对象来实现数据传输的。 XMLHttpRequest对象进行 HTTP 请求前必须通过 open 初始化,open 接受五个参数,分别为请求方法、请求链接、异步标识、账号和密码用以服
2021-05-18
下一篇 
Javascript  异步机制 Javascript 异步机制
Js 异步机制JavaScript是一门单线程语言,所谓单线程,就是指一次只能完成一件任务,如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这种模式的好处是实现起来比较简单,执行环境相对单纯,坏处是只要有一个任务
2021-05-12
  目录