javascript – Fragen zur Ausführungsreihenfolge eines for-Schleifencodes
高洛峰
高洛峰 2017-06-24 09:43:08
0
1
693

Im WeChat-Applet können Sie auf die Leinwand klicken, um sie in ein Bild umzuwandeln und sie dann in der Vorschau anzuzeigen. Da dabei asynchrone Methoden in der for-Schleife aufgerufen werden, habe ich auf Online-Vorschläge verwiesen und eine Funktion zur sofortigen Ausführung innerhalb der for-Schleife verwendet Nach vielen Tests wurde festgestellt, dass die Konsole zunächst „Schleifenindex ist 1“ und dann „Schleifenindex ist 0“ ausgibt (der Einfachheit halber beträgt die Modelllänge 2). In einer Situation wie dieser: Sie klicken auf die erste Leinwand und das Ergebnis wird in der Vorschau angezeigt. Aber es ist die zweite, ich bin verwirrt und hoffe, dass Gott mich aufklären kann.

// 点击图片进行预览 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)) } },
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

Antworte allen (1)
ringa_lee

这很正常,异步返回的时间具有不确定性,所以如果你同时有两个异步方法,返回的先后顺序也是不确定的。微信我没做过,但应该也支持h5的同步方法,你可以试一下,不行的话加个变量控制,当请求队列里有多个未返回时,你只显示最后一个,其他的不让显示。

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!