为什么我收到错误清除未定义中介?

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


清除未定义中介


这是我试图做的循环:


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 上传视频后,它会设置“视频已上传 = true”,这一切正常,并且“如果(视频已上传...”)。火灾


茅侃侃
浏览 68回答 2
2回答

翻阅古今

您应该只使用设置超时和清除超时。您的问题的核心似乎是您想要使用 。这是一种非标准方法,似乎在网络上没有被广泛采用。请参阅 MDN 站点以获取以下信息:setImmediate此功能是非标准的,不在标准轨道上。不要在面向 Web 的生产站点上使用它:它不适用于每个用户。实现之间也可能存在很大的不兼容性,并且行为可能会在将来发生变化。和此方法预计不会成为标准,并且仅由ie浏览器和Node的最新版本实现.js 0.10 +。它遇到了来自壁虎(火狐)和网络套件(谷歌/苹果)的阻力。看起来这被设计成像一个异步CPU绑定的操作,但webkit和Mozilla不同意这个实现,所以它自2011年以来一直在萎靡不振。它已在节点.js中实现。这几乎肯定在节点.js应用程序中比在Web上下文中更有意义,我假设这就是node采用它的原因。我还假设您从节点.js链接中获取此代码?我猜这就是你为什么要这样做的原因。但这大多是毫无意义的。您应该只使用 和 。window.setImmediate = window.setTimeout;setTimeoutclearTimeoutBTW确实存在,但它又是非标准的,没有得到很好的支持。clearImmediate

紫衣仙女

在脚本中没有名为 的函数。clearImmediate相反,要清除超时,则有 。clearTimeout所以用window.clearTimeout(immediateId);而不是window.clearImmediate(immediateId);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript