簡體   English   中英

如何中止JavaScript異步功能?

[英]How to abort JavaScript async functions?

例如,您有一個Web Music Player應用程序。 當用戶單擊播放按鈕時,會觸發一個功能,查找MP3數據,設置播放器等,然后用戶改變主意並單擊另一首曲目上的播放。 有沒有辦法完全取消以前的功能? 我知道您可以中止XHRequests,但是我的意思是像整個函數一樣。 也許JS Promises?

在javascript中,同步功能將運行完畢。 它不會被其他用戶操作打斷。 因此,在您的方案中,如果某個功能觸發並正在設置播放器,則該功能將在處理下一個用戶事件之前運行完畢。 因此,您無法中止javascript中的同步函數,而且無論如何都將無法進行,因為(網絡工作人員除外,這不是我們在此處討論的內容),javascript是單線程的,只要函數正在運行,它將運行完成,並且不會處理其他用戶事件。

但是,如果該函數中包含某種異步操作(例如通過ajax加載某些內容或加載音樂文件的播放器),則該異步操作是否可以中止完全取決於該操作的特定支持-沒有通用中止。 為了幫助我們提供異步詳細信息,您需要公開您的實際代碼,以便我們了解您的工作。

承諾不是中止異步操作的工具。 實際上,它們是相反的工具,因為它們報告異步操作發生的情況和時間。 它們不會導致這些事情發生,而只是在異步操作發生事情時通知觀察者。


與StackOverflow問題通常一樣,如果您公開實際的代碼,我們可以提供更深入的幫助,因為這會將您的問題從理論討論變為對實際代碼選項的實際分析。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM