更新时间:2023-10-30 07:56:10
首先申明,我不了解小程序,所以我以是纯 JS 前端程序的角度来分析,若有不对之处,请谅解并指正
按一般的逻辑,预览哪张图就加载哪张图,为什么会为了预览一张图循环加载一组图?
如果是按现在这个做法,我猜是在预览的时候可以左/右滑来显示其它邻近的预览图。
同时加载有两种常用的现成方法可以实现,一个是使用 ES6 的 Promise.all
,另一种是用 jQuery 的$.when()
,似乎这两种都不是微信小程序推荐的,我不清楚小程序里有没有类似的 API,所以只能以 Promise.all
来描述下过程:把每一个加载过程封装成 Promise,再通过 Promise.all()
来实现异步加载并等待全部完成,
const index = ....;
function load(a) {
return new Promise((resolve, reject) => {
wx.canvasToTempFilePath({
canvasId: "mycanvas" + a,
success: function(res) {
resolve(res.tempFilePath);
},
fail: function(res) {
console.log(res);
reject(res);
}
});
});
}
const loadings = loopedModel.map((m, i) => load(i));
Promise.all(loadings)
.then(results => {
wx.previewImage({
current: results[index],
urls: results
});
});
刚才顺手上网查了一下,发现微信小程序不支持 Promise,不过可以通过第三方库来支持