我具有图片上传功能,上传完成后会返回数据,并且该功能下方有一行代码可以执行其他任务。问题是vuejs / js不会等到第一个函数完成任务。因此,这就是我的代码:
methods : {
uploadImage (file) {
this.uploadModule.upload(file);
if(this.uploadModule.isSuccess) {
this.images.push(this.uploadModule.response)
}
// someFunction()
}
}
因此,在上面的示例中,由于upload()方法需要花费一些时间,因此someFunction()
part在this.images.push()
part之前运行。
是否可以等待上载完成然后再运行其他功能?
您可以从上载方法返回一个Promise,并在Promise的“ next”方法中执行下一部分代码作为回调。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise
它看起来应该像这样:
methods : {
uploadImage (file) {
this.uploadModule.upload(file).then(function () {
if(this.uploadModule.isSuccess) {
this.images.push(this.uploadModule.response)
}
// someFunction()
})
}
}
如果上传未完成,您还可以使用Promise拒绝回调处理错误,并使用catch方法处理错误:
methods : {
uploadImage (file) {
this.uploadModule.upload(file).then(function () {
this.images.push(this.uploadModule.response)
}).catch(function (error) {
console.log(error)
})
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句