建议官方将setData延迟16ms执行
发布于 5 年前 作者 gang79 16971 次浏览 来自 问答

其实毫秒级的setData在某些情况下是不可避免的(尤其是采用了框架的情况)。

所以如果官方能够将setData的执行延迟16ms。比如如下代码:

let timer=null;

if(!!timer) clearTimeout(timer);

timer=setTimeout(function(){

    setData();

},16);

那么就好多了。

嗯,写到这里我突然想改一下自己的框架……

不过如果官方能考虑一下的话,那就再好不过了。

10 回复

感谢反馈。如果仅仅是延迟16ms执行,这是没什么意义的。你的意思是将16ms内的setData调用合并吗?这样的话会和现在的setData执行效果有些许差异,所以不太可能这样变更setData的实现。建议你改一下自己的编码框架来实现。

@Special  感谢官方对于强需求的关注。我们也会一如既往的支持你们。

我在真机测试的,例如log 已经  将 a=0   但是  wxml  里面  还是 a=1  没刷新

楼上哥们,你的修改思路是什么,比如在一个页面 一个 view里面有多重状态的切换

-----------wxml-----------

<!–蓝牙未开启–>

<view class=“measure” style=“width:750rpx;height:{{systemInfo.windowHeight}}px;background-color:{{bgColor}}” hidden="{{!(pageNumber==1)}}">

  <image class=“measureImage” src="…/…/img/bluetooth_ball{{imageSuffix}}"></image>

  <text class=“measureText”>先打开"手机设置",开启"蓝牙"后即可一键测量</text>

</view>

<!–设备扫描中–>

<view class=“measure” style=“width:750rpx;height:{{systemInfo.windowHeight}}px;” hidden="{{!(pageNumber==2 || pageNumber==3)}}">

  <view animation="{{animationData}}" class=“measureImage1”>

  <!-- 扫描 -->

    <view class=“scan” hidden="{{(pageNumber==3)}}">

      <image src="{{scanImageName+imageSuffix}}"></image>

    </view>

    <!-- 连接 -->

    <view class=“connnect” hidden="{{(pageNumber==2)}}">

      <image src="{{connectImageName+imageSuffix}}"></image>

    </view>

    <view class=“circle1” style=“visibility: {{circle1}};”></view>

  </view>

  <!–{{bpTitleH+bpTitleH}}–>

  <view class=“bpDevice” animation="{{animationData1}}" style=“height:{{bpTitleH+bpDeviceViewH}}px;top: {{bpDeviceTop}}px;” hidden="{{discoveryArray.length==0}}">

    <view class=“bpTitle” style="  height: {{bpTitleH}}px;line-height: {{bpTitleH}}px;">选择你要连接的血压计

      <view hover-class=“hover” class=“refresh” bindtap=“refresh”>刷新</view>

    </view>

    <scroll-view class=“device” scroll-y style=“height:{{scrollH}}px;”>

      <block wx:for="{{discoveryArray}}">

        <view class=“bp” id="{{index}}" data-deviceinfo="{{item}}" bindtap=“handDeviceTap” style=“height:{{bpDeviceViewH}}px;”>

          <image class=“bpImage” src="…/…/img/bp3l{{imageSuffix}}"></image>

          <view class=“deviceId” style=“height: {{bpDeviceViewH}}px;line-height: {{bpDeviceViewH}}px;”>{{“底部编码” + item.mac}}</view>

        </view>

      </block>

    </scroll-view>

  </view>

</view>

<!–点击测量–>

<view class=“measure” style=“width:750rpx;height:{{systemInfo.windowHeight}}px;” hidden="{{!(pageNumber==4)}}">

  <image class=“measureImage” bindtap=“handMeasureTap” src="…/…/img/start_ball{{imageSuffix}}"></image>

</view>

js:

that.setData({

              pageNumber:2

            })

or

that.setData({

              pageNumber:3

            })

我这样控制的有时候会发生 状态不切换,你有好的意见么?

我仅针对于组件做控制。不是针对所有的 setData 做控制。

因为我直接把组件对象传到 setData 里去。所以好做。

如果控制全页面,那可能就麻烦些了。

内部讨论了下,我们计划在新版本上增加一个选项支持 setData 合并。

为什么不把 hidden 改为 wx:if ? 另外,如果有更多问题的话加我Q:416909382,方便交流。

没有一个接口可以主动刷新一下视图层么

我的微信号 mobileliuyi @Special 官方       w

回到顶部