亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何利用async、await來改進函數?

如何利用async、await來改進函數?

躍然一笑 2019-07-26 23:36:27
網上找了一段壓縮圖片的代碼,我把它放到單獨的helper.js文件里面,但是由于業務邏輯比較負責,所以不希望用原來的回調來實現,因此希望改進為通過async、await這種形式來避免回調的問題,該怎么改進呢?謝謝!代碼如下:exportfunctioncompress(fileObj,callback){try{constimage=newImage();image.src=URL.createObjectURL(fileObj);image.onload=function(){constthat=this;letw=that.width;leth=that.height;constscale=w/h;w=fileObj.width||w;h=fileObj.height||w/scale;letquality=0.7;constcanvas=document.createElement("canvas");constctx=canvas.getContext("2d");constanw=document.createAttribute("width");anw.nodeValue=w;constanh=document.createAttribute("height");anh.nodeValue=h;canvas.setAttributeNode(anw);canvas.setAttributeNode(anh);ctx.drawImage(that,0,0,w,h);if(fileObj.quality&&fileObj.quality0){quality=fileObj.quality;}constdata=canvas.toDataURL("image/jpeg",quality);constnewFile=convertBase64UrlToBlob(data);callback(newFile);//不希望通過此種方式實現};}catch(e){console.log("error!");}}functionconvertBase64UrlToBlob(urlData){constbytes=window.atob(urlData.split(",")[1]);constab=newArrayBuffer(bytes.length);constia=newUint8Array(ab);for(leti=0;i
查看完整描述

2 回答

?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

大致思路,先讓compress返回Promise對象,然后聲明為async,
exportasyncfunctioncompress(fileObj){
returnnewPromise(
(resolve,reject)=>{
....
constnewFile=convertBase64UrlToBlob(data);
resolve(newFile);
....
catch(e){
console.log("error!");
reject(e);
}
}
);
}
                            
查看完整回答
反對 回復 2019-07-26
  • 2 回答
  • 0 關注
  • 315 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號