當使用forkJoin所有(在這種情況下,HTTP請求)被髮送到服務器瞬間,然後發出一個數組一個單線程服務器(NodeJS)。如果observable_array
包含10個HTTP請求,並且每個請求需要3秒才能完成,則可以在30秒內完成其他請求。Angular2 RxJS ForkJoin替代
我正在尋找的是執行請求1,等待服務器的響應來完成的一種方式,然後執行請求2,然後等待響應等使用這種方法意味着新的請求不要」 t必須等待30秒,然後observable_array
完成由服務器執行......他們只會等待最多3秒。
我想出了以下解決方案,但我相信有更多知識的人有更優雅的解決方案。
let observable_array = [observable1, observable2, ...];
var queue = function(t, ob) { // Needed to use var instead of let because of scoping...
if (ob) {
ob.subscribe(res => {
console.log('Res: ', res);
queue(t, observables.shift());
}, err => {
console.log('Err: ', err);
});
}
}
queue(this, observables.shift());
[可觀察到的數組的順序訂閱](https://stackoverflow.com/questions/46388455/sequential-subscription-to-an-array-of-observables) – jonrsharpe
我不確定他的問題是一樣的 - 鏈接的'重複'不關心並行執行,這是OP關心的 - 他只關心順序訂閱結果。所不同的是關心過多併發的HTTP請求...... –
你倒是應該尋找在後端的解決方案,因爲如果有人要溢出你調用堆棧這會是容易... – Maxime