NervJS / taro

开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/
https://docs.taro.zone/
Other
35.37k stars 4.78k forks source link

setTimeout延迟时间在变长 #13716

Open hebkia opened 1 year ago

hebkia commented 1 year ago

相关平台

微信小程序

复现仓库

https://github.com/hebkia/timeTest.git 小程序基础库: 2.31.0 使用框架: Vue 3

复现步骤

在安卓 8.0.34 的微信版本。 点击按钮后,因为定时器的原因,setTimeout 的执行会延长一个不定时的时间。

快速点击的时候 i 不是顺序出现,会出现 1/6/10 类似的情况。

期望结果

点击以后 setTimeout 能够按照 期望时常执行。

实际结果

出现1/5/10

环境信息

Taro CLI 3.6.5 environment info:
    System:
      OS: Windows 10 10.0.22621
    Binaries:
      Node: 18.12.1 - C:\Program Files\nodejs\node.EXE
      Yarn: 1.22.19 - ~\AppData\Roaming\npm\yarn.CMD
      npm: 8.19.2 - C:\Program Files\nodejs\npm.CMD
    npmPackages:
      @tarojs/cli: 3.6.5 => 3.6.5
      @tarojs/components: 3.6.5 => 3.6.5
      @tarojs/helper: 3.6.5 => 3.6.5
      @tarojs/plugin-framework-vue3: 3.6.5 => 3.6.5
      @tarojs/plugin-platform-alipay: 3.6.5 => 3.6.5
      @tarojs/plugin-platform-h5: 3.6.5 => 3.6.5
      @tarojs/plugin-platform-jd: 3.6.5 => 3.6.5
      @tarojs/plugin-platform-qq: 3.6.5 => 3.6.5
      @tarojs/plugin-platform-swan: 3.6.5 => 3.6.5
      @tarojs/plugin-platform-tt: 3.6.5 => 3.6.5
      @tarojs/plugin-platform-weapp: 3.6.5 => 3.6.5
      @tarojs/runtime: 3.6.5 => 3.6.5
      @tarojs/shared: 3.6.5 => 3.6.5
      @tarojs/taro: 3.6.5 => 3.6.5
      @tarojs/webpack5-runner: 3.6.5 => 3.6.5
      babel-preset-taro: 3.6.5 => 3.6.5
      eslint-config-taro: 3.6.5 => 3.6.5

补充信息

微信原生上setTimeout 之前出现过类似的bug,但是微信官方回复已修复。 https://developers.weixin.qq.com/community/develop/doc/000ecefb5b45887e768fa4c445f400?highLine=setTimeout

用原生代码测试,同机型同微信版本展示正常。

AdvancedCat commented 1 year ago

官方哪里回复已修复了? 我看论坛里都是在报类似的问题,官方仅回复“重启微信试试”。

settimeout 是web规范,应该不会是 polyfill 的问题。得看下是不是微信官方的bug了

hebkia commented 1 year ago

@AdvancedCat https://developers.weixin.qq.com/community/develop/doc/000c086f754788a5bc8f9f9e456400?highLine=setTimeout

https://developers.weixin.qq.com/community/develop/doc/0008ac0e5508e0de179fb3b525f400?highLine=setTimeout 这两个链接里,官方都有回复说有做功能的修复;

同手机同环境测试(小米、华为),原生代码是没问题的,Taro生成的会出现延迟。 感觉还是需要Taro官方去追一下。