繁体   English   中英

为什么我收到错误 clearImmediate is not defined?

[英]Why am I getting the error clearImmediate is not defined?

我正在尝试制作一个在上传视频时停止的不定式循环。 function 工作正常,但停止循环似乎不起作用。 我得到的错误是:

clearImmediate 未定义

这是我想要做的循环:

window.setImmediate = window.setTimeout; //had to add this for it to start the loop

var videoIsUploaded = false;

var immediateId;

function loop() {

    console.log('still uploading');

    immediateId = setImmediate(loop);

    if (videoIsUploaded == true) {

        window.clearImmediate(immediateId);

        HideTheUpload();
    }
}

loop();

function HideTheUpload(){

   document.getElementById("AddVideo").style.display = "none";

}

一旦 Azure 上传了视频,它就会设置“videoIsUploaded = true”,这一切都很好,“if (videoIsUploaded ...”就会触发

铊;博士

您应该只使用setTimeoutclearTimeout


您的问题的关键似乎是您想使用setImmediate 这是一种非标准方法,在 web 中似乎并未广泛采用。 请参阅MDN 站点

此功能是非标准的,不在标准轨道上。 不要在面向 Web 的生产站点上使用它:它不适用于每个用户。 实现之间也可能存在很大的不兼容性,并且行为可能会在未来发生变化。

此方法预计不会成为标准,仅在 Internet Explorer 和 Node.js 0.10+ 的最新版本中实现。 它遇到了 Gecko (Firefox) 和 Webkit (Google/Apple) 的阻力。

看起来这被设计为像异步 CPU 绑定操作一样工作,但 webkit 和 Mozilla 不同意该实现,因此自 2011 年以来它一直在萎靡不振。

它已在 node.js 中实现。 这几乎肯定在 node.js 应用程序中比在 web 上下文中更有意义,我想这就是节点采用它的原因。 我还假设您从 node.js 链接获得此代码?

我猜这就是为什么你要做window.setImmediate = window.setTimeout; . 但这大多是没有意义的。 您应该只使用setTimeoutclearTimeout

BTW clearImmediate 确实存在,但它又是非标准的并且没有得到很好的支持。

在名为clearImmediate

除了清除超时,还有clearTimeout

所以,

利用

window.clearTimeout(immediateId);

代替

window.clearImmediate(immediateId);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM