微信小程序-了解async、await、promise

时间:2021-01-09 00:40:35   收藏:0   阅读:74

1、async是什么

  async用于声明异步的,常常用于处理回调函数。

  async返回一个promise的对象,可以直接用.then,.catch来处理结果。
  onLoad: function (options) {
    // 声明该方法为异步方法,会返回一个Promise对象
    async function test(){
      return ‘云开发‘
    }
    // var a = test();
    // console.log(a)
    console.log(test())
    test().then((res)=>{
      console.log("ook")
    })
    test().catch(err=>{
      console.log(‘nono‘)
    })
  }

技术分享图片




2、resolve成功之后的返回, reject是失败的返回。


3、await 它会阻止后面的代码运行,因为他后面的代码会等待上一个await完成(resolve)
  await避免产生了回调地狱情况,并且提高了代码的可读性。
  注意:await需要搭配async使用,否则会报错。
 
  当没有使用await时,会直接返回Promise对象,并不会执行完resolve()内容。
  function pro1() {
      return new Promise((resolve, reject) => {
        resolve(1)
      })
    }

    function pro2() {
      return new Promise((resolve, reject) => {
        resolve(2)
      })
    }


    // 不使用await
    const a1 = pro1()
    const a2 = pro2()
    console.log(a1)
    console.log(a2)

执行结果:

技术分享图片

 
使用await时:
    function pro1() {
      return new Promise((resolve, reject) => {
        //延时4秒
        setTimeout(()=>{
          resolve(1)
        },4000)
      })
    }

    function pro2() {
      return new Promise((resolve, reject) => {
        resolve(2)
      })
    }

    async function test2(){
      const a1 = await pro1()
      const a2 = await pro2()
      console.log(a1)
      console.log(a2)
    }
    test2()

执行结果:因为await会阻止后面的代码运行,因为他会面的代码会等待上一个await完成,也就是会执行完resolve()再结束方法。

技术分享图片

 

原文:https://www.cnblogs.com/yihui98/p/14251287.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!