簡體   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