WXS与setInterval BUG问题

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 Bug 客户端 6.7.4 2.3.0

- 当前 Bug 的表现(可附上截图)

    在真机上同一页面内 同时使用WXS与setInterval时,WXS内的funtion会重复调用

    在微信开发者工具上并不会出现

    


- 提供一个最简复现 Demo

js代码:

data: {

test: '',

array: [1, 2, 3, 4, 5, 1, 2, 3, 4]

},


onLoad: function(options) {

let _this = this;

setInterval(() => {

console.log("这是计时")

_this.setData({

test: '这是计时'

})

},1000);

},


wxml代码:

<wxs module="m1">

var getMax = function(array) {

var max = undefined;

for (var i = 0; i < array.length; ++i) {

max = max === undefined ?

array[i] :

(max >= array[i] ? max : array[i]);

}

console.log("max", max)

return max;

}

module.exports.getMax = getMax;

</wxs>

<view> {{m1.getMax(array)}} </view>

<view> {{test}} </view>

@官方大神 求意见和建议!!!!

最后一次编辑于  12-05  (未经腾讯允许,不得转载)
收藏 0评论 0
关注问题写回答

5 个回答

  • 烟雨海花 lwl烟雨海花 lwl

    我个人觉得是setData的渲染机制和页面的生命周期有关,

    先是onload,这个时候,页面才刚开始启动还没有完全渲染出来,

    再来是ready,才是渲染成型的阶段。

    所以我个人猜想应该把定时器写在这里,会表现的好点


    赞同 0没有帮助
    评论 0
    复制
    12-06
  • 管凯旋管凯旋

    似乎有点不太合理

    赞同 0没有帮助
    评论 0
    复制
    12-05
  • 这都申请了这都申请了

    关注一下

    赞同 0没有帮助
    评论 0
    复制
    12-05
  • 微盟微盟

    https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F

    赞同 0没有帮助
    评论 0
    复制
    12-05
  • 再见,电脑崽再见,电脑崽

    计时器里的setData会触发页面重新渲染,页面在渲染的时候,就要重新执行你的getMax函数咯。

    赞同 0没有帮助
    评论 9
    复制
    12-05
    • JWJW

      setData会刷新整个页面的重新渲染?

      赞同 0没有帮助
      回复
      复制
      12-05
    • 再见,电脑崽再见,电脑崽
      回复JW

      你提供的代码无法重现你所描述的问题。


      是不是不同手机上不一样,我这是模拟器测试正常。

      赞同 0没有帮助
      回复
      复制
      12-05
    • JWJW
      回复再见,电脑崽

      只有真机才会出现 微信开发者不会出现的

      赞同 0没有帮助
      回复
      复制
      12-05
    • 展示更多
    评论