Dalam applet WeChat, anda boleh mengklik pada kanvas untuk menukarnya menjadi gambar dan kemudian melihatnya Memandangkan ia melibatkan kaedah tak segerak dipanggil dalam gelung for, saya merujuk kepada cadangan dalam talian dan menggunakan fungsi pelaksanaan segera di dalam gelung for. . Selepas banyak ujian, didapati bahawa terdapat Pada masa ini, konsol akan mencetak "indeks gelung ialah 1", dan kemudian mencetak "indeks gelung ialah 0" (untuk kemudahan, panjang model ialah 2), terhasil. dalam situasi seperti ini: anda klik pada kanvas pertama dan hasilnya dipratonton Tetapi ia adalah yang kedua Saya hairan dan berharap Tuhan dapat menyedarkan saya.
<canvas wx:for="{{ model }}" bindtap="previewImg" canvas-id="{{ 'mycanvas' + index }}" data-index="{{ index }}"/>
// 点击图片进行预览
previewImg: function (e) {
var tempFilePathList = [];
var index = e.target.dataset.index;
var self = this;
var loopedModel = self.data.model;
for (var i = 0; i < loopedModel.length; i++) {
(function (a) {
wx.canvasToTempFilePath({
canvasId: 'mycanvas' + a,
success: function (res) {
console.log('loop index is ' + a);
tempFilePathList.push(res.tempFilePath);
if (a == loopedModel.length - 1) { // 循环到最后一个了
console.log('current image is ' + tempFilePathList[index]);
wx.previewImage({
current: tempFilePathList[index], // 当前显示图片的http链接
urls: tempFilePathList // 需要预览的图片http链接列表
})
}
},
fail: function (res) {
console.log(res);
}
});
}(i))
}
},
Ini adalah perkara biasa. Masa pemulangan tak segerak tidak pasti, jadi jika anda mempunyai dua kaedah tak segerak pada masa yang sama, susunan pemulangan juga tidak pasti. Saya belum melakukannya dengan WeChat, tetapi ia juga harus menyokong kaedah penyegerakan h5 Anda boleh mencubanya Jika ia tidak berfungsi, tambahkan kawalan pembolehubah Apabila terdapat berbilang permintaan dalam baris gilir. anda hanya akan memaparkan yang terakhir, dan yang lain tidak akan dipaparkan.