WXS与setInterval BUG问题
发布于 5 年前 作者 wei45 4537 次浏览 来自 问答
  • 当前 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>

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

6 回复

楼主解决了吗?

关注一下

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

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

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

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

似乎有点不太合理

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

回到顶部