2015-04-05 59 views
-1

是否可以在沒有遞歸的情況下在JavaScript中實現異步循環?沒有遞歸的異步循環?

例如,是否可以同步異步任務隊列而不訴諸遞歸?我們在一個隊列中有N個異步任務,並且在前一個任務完成之後需要執行每個任務。

到目前爲止我所見過的所有例子都使用了遞歸。但是如果我們必須處理一個很長的隊列,那麼我們不能指望遞歸方法有什麼好處。那麼有什麼選擇,如何解決這個問題?

就這樣,當一個similar question被問及承諾時,每一個答案都依賴於遞歸。

+0

你能舉一個具體的例子嗎? – 2015-04-05 10:46:16

+0

第二段是具體的例子。 – 2015-04-05 10:46:59

回答

2

我們不能指望遞歸方法有什麼好處。

您的前提是錯誤的。正如你所做的是異步的,遞歸方法沒有錯(有時被稱爲pseudo-recursion),它不會增長調用堆棧。

+0

這很棒,讓生活變得更輕鬆。乾杯! – 2015-04-05 11:15:45

+0

P.S.我不在乎是否選民撤消了我的問題,這是一個非常有效的問題,我得到了一個很好的答案。 – 2015-04-05 11:17:28

+0

它可能不會增長調用堆棧,但是它不會穩定地在無限長的Promise鏈中累積資源嗎?如果確實如此,那麼當鏈最終結束並釋放所有這些資源時,可能會出現意想不到的延遲。它可能不如堆棧溢出那麼糟糕,但如果是真的,那仍然是非常不理想的。 – 2017-04-22 14:50:02