我將描述這種「依賴性地獄」的簡化示例。需要用於處理異步代碼中依賴性地獄的庫或設計模式
想象一下帶有「播放/暫停」和「靜音/取消靜音」按鈕的視頻播放器。暫停視頻應暫停播放聲音,但不要將其靜音,以便視頻暫停播放應取消暫停播放音頻。
然後想象我們正在單獨的文件下載音頻和視頻,所以我們有四個成功/錯誤回調。想象一下,視頻可以無音頻播放,但不能相反。現在想象一下,如果需求更新,應該對代碼進行多少更改,以便視頻和音頻應該相互等待。
目前我正在處理這個使用回調和布爾變量。我有一種感覺,這是石器時代,因爲這樣的事情:
if (videoShouldPlay && audioShouldPlay && isAudioPlaying && isVideoDownloaded && isAudioDownloaded) {
或4類似的回調:
audio.onload = function() {
if (isVideoDownloaded)
.....
} else { ...
}
不可讀維護。依賴關係的數量隨着組件的數量呈指數增長,但當我可以定義一些通用規則時,我不應該跟蹤每個依賴項。
我確信計算機科學已經解決了這個問題。
給匿名downvoter:請解釋downvote! – Ali