首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离子3:误差setTimeout

离子3:误差setTimeout
EN

Stack Overflow用户
提问于 2017-08-21 11:40:18
回答 4查看 11.3K关注 0票数 0

我们正在使用:

  • 离子框架: 3.6.0
  • 离子原生:^2.2.6
  • 离子应用程序脚本: 2.1.4
  • 角芯: 4.3.5
  • 角编译器CLI: 4.3.5
  • 节点: 6.11.2

(我们还访问了node_modules/@离子型/app-脚本,并将ws更新为1.1.4 (正如您所做的-_-))

在做离子服务时,我们会得到以下错误:

运行时错误

macroTask 'setTimeout':无法过渡到‘运行’,期待状态‘预定’,是‘没有计划’。

我们试着用过时的方法升级所有的东西,这基本上就是所有关于这个问题的建议。有时错误仍然存在。当您重新加载1/3次时,就会出现错误。

如此专业的“解决办法”如下:

代码语言:javascript
复制
<script>
    window.uneffedTimeout = window.setTimeout;
</script>

<!-- The polyfills js is generated during the build process -->
<script src="build/polyfills.js"></script>

<script>
    window.setTimeout = window.uneffedTimeout;
</script>

所以我的问题是:

是否有一种方法可以适用于精神病院以外的人?

编辑

因为我最初用盐做的解释不像我应该解释的那样准确,让我澄清一下:

错误不会发生,因为我在代码中调用了setTimeout。当页面加载时,角度和/或角度上的附加元素会在引擎盖下面调用。我不能改变这个电话发生的事实,也不能合理地改变呼叫的方式。

所发生的事情似乎是,polyfill只生成补丁,浏览器为setTimeout方法提供了自己的实现。这个实现要么是错误的,要么不适用于代码的其他部分。

事实证明了这一点:如果我们将setTimeout还原回它之前的情况,那么一切都很好。

现在我们想要的是多填充,要么给我们一个setTimeout的功能实现,要么一点也不乱。“修正”以一种非常糟糕的方式完成了后一项任务。我宁愿有一个解决方案,它不要求我在运行时修复损坏的组件。

EN

回答 4

Stack Overflow用户

发布于 2017-08-21 12:16:09

代码语言:javascript
复制
setTimeout(() => {
         someFunction();
        }, 500);
票数 0
EN

Stack Overflow用户

发布于 2018-02-04 17:40:39

离子项目中的这种内部错误通常是由于组件的版本之间不兼容造成的。你可能必须升级或降级其中一个。并确保您正在使用的稳定版本,其发布日期不太遥远的时间。用ionic start启动一个新的空白项目,并写下它的package.json中使用的版本。

例如,昨天为了让我的项目在家里运行,我不得不用npm install -g ionic-cli@3.9.2将我的离子型cli降级为v3.9.2,并将我的node.js降级到8.9.4。在Mac和Linux中,您可以使用NVM (节点版本管理器),它允许您在不同的节点版本之间快速切换。记得调用npm rebuild或只删除您的node_modules文件夹。我经常需要使用npm rebuild node-sass --force

票数 0
EN

Stack Overflow用户

发布于 2020-04-11 06:31:52

对于离子3,请使用这个

代码语言:javascript
复制
let timeInMs = 5000;
let timeout= setTimeout( () => {
     // your code
}, timeInMs );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45796192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档