У меня есть сценарий, гдеRxJS5 - ждать 2 HTTP вызовов, а затем прослушивать сокет
- Мне нужно позвонить 2 HTTP службы ждать их обоих
- Позвоните некоторый метод
- Начало прослушивания сокет, который будет рядом часто
- Каждый раз, когда сокет потоки, вызовите некоторый другой метод
Если это имеет значение, я использую Angular2.
У меня сейчас отдельный (и рабочий).
Мне интересно, как я могу создать это во всей одной серии операторов, чтобы гарантировать ожидание первых двух вызовов без использования локальных варов? - если даже имеет смысл делать ...
То, что я работаю с:
this.sub1 = Observable
.forkJoin([http.get(/api1), http.get('/api2')])
.subscribe(([api1ResData, api2ResData]) => {
this.doSomething(api1ResData, api2ResData);
});
this.sub2 = socket.get('api3')
.subscribe(data => {
this.doSomethingElse(api3ResData);
});
Спасибо за информацию. Пробуя версию async, я получаю ошибку типа: Аргумент типа '([api1ResData, api2ResData]: any []) => void' не присваивается параметру типа '(значение: any [], index: number) = > ObservableInput <{}> '. Тип 'void' не присваивается типу 'ObservableInput <{}>'. – Thibs
Привет, вы можете проверить, были ли вы установлены операторы 'return', и если да, можете ли вы сказать мне, какая из двух коммутационных макетов дает вам ошибку? Кроме того, убедитесь, что и socket.get, и this.doSomething возвращают либо обещание, либо наблюдаемое. Здесь попробуйте указать источник этих функций, чтобы они возвращали любой из этих типов. – Bertofer
Благодарю вас за ваше время. Проблема в том, что this.doSomething не возвращает наблюдаемый, это обычный метод, при котором ничего не возвращается. (Тот же случай для doSomethingElse) – Thibs