0

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

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 ...”会触发

4

2 回答 2

2

铊;博士

你应该只使用setTimeoutand clearTimeout


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

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

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

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

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

我猜这就是你这样做的原因window.setImmediate = window.setTimeout;。但这大多是没有意义的。你应该只使用setTimeoutand clearTimeout

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

于 2020-06-09T11:21:25.023 回答
1

Javascript 中没有名为clearImmediate.

而是清除超时clearTimeout

所以,

利用

window.clearTimeout(immediateId);

代替

window.clearImmediate(immediateId);
于 2020-06-09T11:07:42.217 回答