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