WXS与setInterval BUG问题

发布于 7 年前作者 wei454801 次浏览最后编辑 7 年前来自 ask
  • 当前 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 回复
kongqiang
kongqiang1 楼6 年前

楼主解决了吗?

wei36
wei362 楼6 年前

关注一下

limao
limao3 楼6 年前

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

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

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

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

xiulanhou
xiulanhou5 楼6 年前

似乎有点不太合理

xiulan45
xiulan456 楼5 年前

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