回顾async/await

今天看到一道题:

// 继发执行
function
wait() { return new Promise(resolve => setTimeout(resolve, 1* 1000) ) } async function main() { // console.time(); const x = wait; const y = wait; const z = wait; console.log(new Date()) await x(); console.log(new Date()) await y(); console.log(new Date()) await z(); console.log(new Date()) //console.timeEnd(); } main();
// 执行此代码时间大概为3s



// 并发执行:
function wait() {
  return new Promise(resolve =>
    setTimeout(resolve, 1* 1000)
  )
}

async function main() {
//  console.time();
  const x = wait();
  const y = wait();
  const z = wait();
  console.log(new Date())
  await x;
  console.log(new Date())  
  await y;
  console.log(new Date())  
  await z;
  console.log(new Date())  
  //console.timeEnd();
}
main();
// 时间为 1s多一点

async:

  • 表示异步执行
  • 返回值必为promise,即使手写的为普通变量,也会自动包装为promise,如果你写了promise,则已你写的为准。

await:

  • 只能写在async函数中,其后面跟表达式。
  • 阻塞async函数,不过注意,先执行其后面的,再去阻塞async,然后去执行async外面的同步代码,执行完以后再执行async里面的await+表达式下面的代码

这是一个微任务,不是宏任务哦,因为promise也是微任务。

上面代码中并发执行与继发执行的区别,

 

posted @ 2019-09-03 19:32  大野酱  阅读(149)  评论(0编辑  收藏  举报