调试工具闭包的执行逻辑不正确
发布于 6 年前 作者 fanxia 13818 次浏览 来自 问答
var a = [1, 2, 3, 4];
var heheTimeout = cb => setTimeout(cb, 1000 * Math.random());
a.forEach((num, index) => {
   wx.getImageInfo({

     src: 'path/to/an/image',

       success: res => {
           heheTimeout(_ => {
               console.log(index) // 正确, 0,1,2,3乱序
           });
           wx.canvasToTempFilePath({

             x: 0,

             y: 0,

             width: 100,

             height: 100,

             destWidth: 100,

             destHeight: 100,

             canvasId: 'tmpCanvas',

               success: res => {
                   console.log(index); // 不正确,四个都是同一个值,例如输出四次3
               }
           });
       }
   });
});

代码排版已优化,有劳官方验证。注意,这是在开发者工具里遇到的bug,在手机上不会有。

4 回复

小程序的js执行环境是成熟的js执行环境(在各个平台上使用的环境不一样)。所以对于这类问题请首先确认是不是你自己的代码造成的问题,如果确实有执行环境的问题,麻烦提供尽可能完整的代码,并说明是在什么平台下出现的问题。

P.S. 请改善代码排版。

你好,是 wx.canvasToTempFilePath 在开发者工具的实现有问题,我们会尽快修复。

问题我已确认过,请官方验证。P.S. 排版已改好

我不做评论

回到顶部