经常会有小伙伴问异步的问题,异步处理方案有很多,我来说一下我常用的。
背景:我们需要上传图片到oss,拿到oss返回的地址传给后台存到数据库。
此时,两次请求都是ajax,如果不处理,可能会因为oss上传还未成功,就已经往后台传值去存储,会导致出现空值情况。
由于异步请求顺序问题,我们需要把它变为同步。以往解决的方法往往会产生回调地狱的问题,ES6引入了async/await,我们就可以优雅地解决了。
talk is cheap
handleUploadToOss(){
return new Promise (function(resolve,reject){
//函数内容、调用上传oss接口
...
//成功
resolve()
//失败
reject()
})
}
handleUpload(){
return new Promise (function(resolve,reject){
//函数内容、调用上传后台接口
...
//成功
resolve()
//失败
reject()
})
}
async handleSubmit(){
await handleUploadToOss();
console.log("===上传到oss===")
await handleUpload();
console.log("===上传到后台===")
}
网友评论