я выдвигаю наблюдаемые в массив, как, например ...RXJS Подождите все наблюдаемые в массиве для завершения (или ошибка)
var tasks$ = [];
tasks$.push(Observable.timer(1000));
tasks$.push(Observable.timer(3000));
tasks$.push(Observable.timer(10000));
Я хочу наблюдаемый, который излучает, когда все задачи $ завершены. Имейте в виду, что на практике задачи $ не имеют известного числа наблюдаемых.
Я пробовал Observable.zip(tasks$).subscribe()
, но это кажется неудачным в случае, если есть только одна задача, и заставляет меня полагать, что для ZIP требуется четное количество элементов, чтобы работать так, как я ожидал.
Я пробовал Observable.concat(tasks$).subscribe()
, но результат оператора concat просто кажется массивом наблюдаемых ... например. в основном то же, что и вход. Вы даже не можете подписаться на него.
в C# это будет сродни Task.WhenAll(). в ES6 обещал, что это будет похоже на Promise.all().
Я столкнулся с рядом вопросов, но все они, похоже, имеют дело с ожиданием на известном количестве потоков (например, их сопоставление).
Это зависит от того, что вы хотите сделать, когда какое-либо из Наблюдателей отправит уведомление об ошибке. Вы хотите просто проигнорировать ошибку или это означает, что весь результат будет отброшен, и вы получите только ошибку. – martin