我從Axios AJAX庫中找到了這個例子,但是Promises.all()
也是如此。Promises.all如何確保所有承諾都可用?
到目前爲止,我讀過你可以使用Promises.all()
來檢查是否已經解決了一系列承諾中的所有承諾。
這真的很整齊,但如果你推動承諾並在下一個承諾被推之前解決,會發生什麼?
我猜測我的平均AJAX調用的開銷至少爲50毫秒,推送將始終發生在任何ajax請求之前,但只是說爲此授予並不真正感覺正確。
這有2級的解決方案,我能想到的:
使用計數,以保證雙方(在thise情況下)AJAX請求是
陣列英寸檢查存在的實際函數名稱。
如何是別人處理這個或者是大多數人只是滿足於這兩個AJAX請求的希望推前一個人可以解決的速度不夠快。
axios.all([getUserAccount(), getUserPermissions()])
.then(axios.spread(function (acct, perms) {
// Both requests are now complete
}));
這是不是很清楚你問的。你是否在動態構建承諾數組?或者你想知道這些請求是否可以在包裝之前完成? – Nit
是的,這些承諾正從多個地方推出。比方說,一個單一的承諾一直在推動,而我期望2個承諾,那麼在理論上這個承諾可能在第二個承諾被推之前觸發一個承諾?如果是這種情況,那麼需要有一種機制來事先檢查這一點嗎? –
您不需要預先檢查的機制。 'Promise.all'從一系列承諾中做出單一承諾。你是什麼意思,他們被推到不同的地方 –