收藏
回答

小程序中链式then的疑问?

我网上看教程写了一个链试的then
希望的结果是: 
1 删除图片
2 上传图片
3 保存信息
但我运行代码还
1 删除图片
3 保存信息
2 上传图片
这是什么原因?

//删除图片
    const delFile = new Promise((reslove, reject) => { //删除图片
      
      //删除图片
      wx.cloud.deleteFile({
        fileList: [this.data.customer.fileId],
        success: res => {
          console.log("1/删除图片")
          reslove(res)
        },
        fail: err => {
          reject(err)
        }
      })
    })

    delFile.then(res => { //上传图片
      
      //上传图片
      let fileName = app.globalData.openid + Date.now() + '.png'
      wx.cloud.uploadFile({
        cloudPath: fileName,
        filePath: this.data.showImg,
        success: res => {
          console.log("2/上传图片")
          return Promise.resolve(res)
        },
        fail: err => {
          return Promise.reject(err)
        }
      })
    }).then(res => { 
      
      //保存信息
      customerDb.add({ 
        data: {
          phone: this.data.customer.phone,
         },
        success: res => {
          console.log('3/保存信息')
          return Promise.resolve(res)
        },
        fial: err => {
          console.log(err)
          return Promise.reject(err)
        }
      })
    }).then(res => {
      this.showMsg('提交成功')
      wx.hideLoading()
    }).catch(err => {
      wx.hideLoading()
    })

回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    2020-02-28

    我就看不懂这么写是干啥

    2020-02-28
    有用
    回复 5
    • 杜凡
      杜凡
      2020-02-28
      我要先确认删除文件,然后上传文件,然后把上传文件的ID保存到数据库。  现在遇到的问题是,删除成功了,然后先保存了数据库,再上传文件。导致保存的数据库里没有上传文件的ID
      2020-02-28
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-02-28回复杜凡
      这个写法不对  还是异步,没有按顺序执行
      2020-02-28
      回复
    • Mr.Zhao
      Mr.Zhao
      2020-02-28回复杜凡
      用 async await吧
      2020-02-28
      回复
    • 杜凡
      杜凡
      2020-02-28回复Mr.Zhao
      是的,我就有不明白这个,我现在把每个异步写成一个 Promise 看看
      2020-02-28
      回复
    • 杜凡
      杜凡
      2020-02-28回复Mr.Zhao
      前端也可以用这个?我试一下。
      2020-02-28
      回复
登录 后发表内容
问题标签