0
我正在創建一個基於QUnit的自動化測試框架,如果需要太長時間(超時),我希望能夠殺死一個測試。現在,我目前的實現非常簡單:在測試開始時,我設置了一個計時器並等待。如果測試尚未完成,我將其標記爲失敗並重新加載測試正在運行。在iframe中中斷JS
如果它正在等待AJAX調用或者異步測試再也不會返回,那麼這很有用。但是,setTimeout
函數將始終在當前執行線程之後運行,所以如果測試進入無限循環,或者在標準執行中花費太長時間,它不會真正停止它,而是坐在並等待輪到它不中斷它。 是否有任何方法可以取消子代(即在同一個域中)中的代碼執行,即使它陷入循環?
「*每個頁面運行在不同的線程*」 - 這取決於瀏覽器。 – Bergi
這是我目前所擁有的,但無限循環/長代碼執行的情況是我想要能夠更好地處理的情況。此外,就不同的頁面運行不同的'線程',這可能是瀏覽器的具體情況,我想獨立於瀏覽器。另外,瀏覽器會將不同的頁面計算爲不同的頁面,還是在同一個「線程」中運行它們? – Ktash
你真的很想和那個伴侶爭鬥 - 即使是瀏覽器也有問題 - 讓我來玩一玩吧。 –