第一種情況,網(wǎng)上好多解決方案是加sync或者await,還有的加setInterval,這幾種方案我都沒有選,而且使用嵌套調(diào)用。
/**
* 處理圖片
*/
handleOneImage: function(ctx, images, idx) {
let that = this;
let oneImage = images[idx];
let pro = new Promise(function(resolve, reject) {
if (oneImage == undefined) {
//畫圖結(jié)束
//執(zhí)行一系列操作
} else {
//成功畫圖結(jié)束,執(zhí)行下一張圖的操作
that.drawOneImage(ctx, oneImage, that.data.xp).then(isSuccess => {
if (isSuccess == 'success') {
that.handleOneImage(ctx, images, idx 1);
}
});
}
});
return pro;
},
/**
* 畫圖片
*/
drawOneImage: function(ctx, image, xp) {
let that = this;
//保證獲取圖片信息、畫圖等操作同步進(jìn)行結(jié)束再返回結(jié)果
let pro = new Promise(function(resolve, reject) {
wx.getImageInfo({
src: image,
success: function(imageInfo) {
let iWidth = imageInfo.width;
let iHeight = imageInfo.height;
let dWidth = (iWidth * 580) / iHeight;
ctx.drawImage(image, xp, 0, dWidth, 580);
ctx.stroke();
that.setData({
xp: that.data.xp dWidth
});
resolve('success');
}
});
});
return pro;
},
第二種情況:其實(shí)在解決第一種情況的代碼中,也用到了解決第二種情況的代碼,使用Promise,有需要的話可以研究下上面的代碼。
這些解決方案也是我的一個(gè)小程序里面的代碼片段,小程名字叫圖作妖,一個(gè)小而美的圖片合成、剪切小程序,歡迎大家體驗(yàn)。
推薦教程:《微信小程序》
更多關(guān)于云服務(wù)器,域名注冊(cè),虛擬主機(jī)的問題,請(qǐng)?jiān)L問西部數(shù)碼官網(wǎng):m.ps-sw.cn