且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

javascript - 关于一段 for 循环代码执行顺序的问题

更新时间: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,不过可以通过第三方库来支持