HarmonyOS鸿蒙Next在TV和Wearable上居然不支持setTimeout和setInterval方法,仅仅只能在LiteWearable上支持,我都折腾了两天了

HarmonyOS鸿蒙Next在TV和Wearable上居然不支持setTimeout和setInterval方法,仅仅只能在LiteWearable上支持,我都折腾了两天了 下面是我的代码,

图像

然后这个打印结果没有出来,取而代之的是一个底层的报错,截图如下

图像

在TV和Wearable上都会报这个错。这个功能太重要了,希望华为能尽早修复


更多关于HarmonyOS鸿蒙Next在TV和Wearable上居然不支持setTimeout和setInterval方法,仅仅只能在LiteWearable上支持,我都折腾了两天了的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

下面是转换后的Markdown文档:

下面是我的代码,

![截图](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/026/383/511/0070086000026383511.20201020094347.28019543646363089143423454430547:50001231000000:2800:10E57326CAEC5D5FECD3E47A9653E12298EDF76C26778DA6638EF4B56916664A.png)

然后这个打印结果没有出来,取而代之的是一个底层的报错,截图如下

![报错截图](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/026/383/511/0070086000026383511.20201020093635.26363729082083567212165613847188:50001231000000:2800:F311E215EC0DC0D8A22A11931F093C552E303717B5BDC76791FD9963D22CD83A.png)

在TV和Wearable上都会报这个错。这个功能太重要了,希望华为能尽早修复

更多关于HarmonyOS鸿蒙Next在TV和Wearable上居然不支持setTimeout和setInterval方法,仅仅只能在LiteWearable上支持,我都折腾了两天了的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


苦苦折腾了两天,终于自己把这个问题搞定了。官方手册翻遍了,官网底层c实现js也查了,始终找不到好思路,只好不停的尝试各种办法。经过100+次的尝试,终于找到一个解决办法了。

无意间在app.js种调用了setTimeout方法,发现是可以正常执行的,没有我之前的那个TypeError的错误了,而之前在页面中直接调用这个是不可行的。瞬间像发现了新大陆了,于是我自己在app.js中定义一个mySetTimeout方法来进行中转setTimeout方法。代码如下,

然后我们就要想办法在页面中如何调用app.js中我们自己封装的方法了。这里仔细查阅官方api手册会发现有一个好东西,就是this.$app.$def,于是页面中的代码可以这么写,

在此,问题得到完美解决,setInterval的解决方案同理。

实现上虽然麻烦了点,总算是解决了问题,希望华为官方后面能更新api以支持可以直接页面中调用定时器。

目前我还没有在论坛、官网、百度上找到任何可以用的解决方案,大家觉得有用可以把帖子顶一顶,防止更多的开发者跟我一样被这个api坑两天。

层主,也就是说定时器必须写在app.js里然后再调用不能直接写在index.js这样吗,现在修复了吗?

官方已经修复了这个bug,可以直接放心使用,无需使用我这个解决方案了。

亲爱滴开发者 ,这个问题已经在处理中啦,稍后答复你哟 ,么么哒

在HarmonyOS鸿蒙Next中,setTimeoutsetInterval方法在TV和Wearable设备上确实不支持,仅在LiteWearable设备上可用。这是由于不同设备的系统架构和资源限制导致的。TV和Wearable设备通常运行在更复杂的场景下,系统对定时器的管理方式与LiteWearable设备不同,因此未提供这两个方法。开发者需要根据设备类型选择合适的定时器实现方式,例如使用TaskDispatcherTimer等替代方案。

在HarmonyOS鸿蒙Next中,setTimeoutsetInterval方法在TV和Wearable设备上确实不被支持,这可能是由于这些设备的资源限制或系统设计考虑。建议您使用其他替代方案,如requestAnimationFramesetImmediate来实现类似的功能。同时,确保查阅最新的官方文档,以获取最新的API支持和最佳实践。

回到顶部