我爱编程

小坑(用Element-ui)

2018-05-16  本文已影响0人  peakol

今天碰见了一个小问题,拿来分享一下:

 // 图片上传之前
      logoBeforeUpload(file) {
        const self = this
        // 计算md5并传给upload组件
        this.fileMd5Calculate(file, (md5) => {
          console.log(md5);
          debugger
          self.$set(self.postData, 'md5', md5)
        })
      }

感觉逻辑也没有写错呀,况且el-upload组件的props中md5确实已经有值了,这是肿么情况,打个断点吧,


感觉找到错误了

我去,在beforeUpload中为啥我的逻辑还没走完,它就先给我触发上传了??仔细看了一下代码,fileMd5Calculate计算文件md5是个耗时工程,且我赋给md5又是个异步,而element封装的upload的方法才不管你是不是异步,我该运行就运行,擦擦擦。。。
找到问题了,就把代码改一下

// 图片上传之前
      logoBeforeUpload(file) {
        const self = this
        // 当文件上传之前必须返回false或promise才能阻止文件上传,当我们对文件进行配置后,我们需要继续            
           运行所以通过promise的resolve
        return new Promise((resolve, reject) => {
          // 计算md5并传给upload组件
          self.fileMd5Calculate(file, (md5) => {
          console.log(md5);
          self.$set(self.postData, 'md5', md5)
          // 继续执行上传
          resolve()
        })
        })
      }

用个promise吧(也给自己大大的备注),当我们md5赋值的过程进行完成后我们再触发真正的上传操作,
这时候成功了


成功了
上一篇下一篇

猜你喜欢

热点阅读