码迷,mamicode.com
首页 > 其他好文 > 详细

async和await

时间:2021-05-24 14:54:53      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:pad   val   await   xxxx   输出   异步操作   xxxxx   顺序   time   

async和await是解决异步编程问题的。

promise的then方法链式调用不够优雅

  1. async 修饰的函数同步返回一个promise
  2. 使用await必须包裹一个async修饰的函数
  3. async返回的promise的状态由await修饰的promise的状态决定
  4. 如果await修饰的promise未全部解决async返回的promise就是padding
  5. await修饰的promise是按书写顺序解决的(等上一个promise出来结果后这个promise才开始执行)
  6. 如果异步操作没有被await修饰则不影响返回的promise状态
const promisify = require(‘util‘).promisify
const readFile = promisify(require(‘fs‘).readFile)
const read = async function () {
  let r1 = await readFile(‘驿外.txt‘, ‘utf-8‘)
  console.log(1);
  let r2 = await readFile(‘桃夭.txt‘, ‘utf-8‘)
  console.log(2);
  let r3 = await readFile(‘孔雀东南飞.txt‘, ‘utf-8‘)
  console.log(3);
  console.log(r1 + r2 + r3);

  const timeOut = new Promise((suc, err) => {
    setTimeout(() => {
      suc(‘到时间了‘)
    }, 2000)
  })
  let r4 = await timeOut
  console.log(r4);
  //等r4解决了才会输出
  console.log(r1);

  const timeOut2 = new Promise((suc, err) => {
   setTimeout(() => {
      //这个promise会老老实实的等上一个解决了才会开始解决
     console.log(‘xxxxxx‘);
     suc(‘我是第二个定时器‘)
   }, 1000)
  })
  let r5 = await timeOut2
  console.log(r5);

  return ‘async函数里的await(等待的)promise全部完成!‘
}
console.log(read().then(value => { console.log(value); }));

async和await

标签:pad   val   await   xxxx   输出   异步操作   xxxxx   顺序   time   

原文地址:https://www.cnblogs.com/dingtongya/p/14781464.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!