async await promise 各种坑点

各个promise会异步执行,但是返回的结果,会按照数据[a,b]的顺序输出

  onLoad() {
    let a=new Promise(resolve=>{
      setTimeout(() => {
        console.log('1')
        resolve('a')
      }, 1000);
    })
    let b=new Promise(resolve=>{
      setTimeout(() => {
        console.log('2')
        resolve('b')
      }, 500);
    })
    Promise.all([a,b]).then(res=>{
      console.log(res)
    })
    console.log('c')
    //各个promise会异步执行,但是返回的结果,会按照数据[a,b]的顺序输出
  },

输出结果:
在这里插入图片描述

async-await ,await对应的函数需要封装一个promise

错误

 async onLoad() {
   let a=await this.setTime()
 console.log('a',a)
  },
  setTime(){
    setTimeout(() => {
      return 1
    }, 1000);
  }
  //a undefined

正确

 async onLoad() {
   let a=await this.setTime()
 console.log('a',a)
  },
  setTime(){
  return new Promise(resolve=>{ setTimeout(() => {
      resolve(1) 
    }, 1000);
  })
  }
  //a 1

要引用一个异步的函数,该函数可以用return new Promise包起来,再引用,引用出加.then即可

  onLoad() {
    this.setTime().then(res => {
      console.log('res', res)
    })
  },
  setTime() {
    return new Promise(resolve => {
      setTimeout(() => {
        resolve(1)
      }, 1000);
    })
  }
  //res 1

wx.cloud.uploadFile的success回调,里面如果有报错,console不会提示出来

  // 上传到云开发的存储中
  uploadImage(fileURL) {   
      let p = new Promise((reslove, reject) => {
        wx.cloud.uploadFile({
          cloudPath: path + new Date().getTime() + suffix, // 上传至云端的路径
          filePath: fileURL[i].url, // 小程序临时文件路径
          success: res => {
          	// fileID.push(res.fileID)《注意此处,之前没注释,此fileID为未定义,
            //出错了,但是console不提示,导致下面reslove不执行》
            reslove(res.fileID)
          },
          fail: console.error
        })
      })
      task.push(p)
    }
    Promise.all(task).then(res => {
      console.log(res);
    })
  },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值