Я предполагаю, что это должно быть легко достигнуто, но у меня проблемы (концептуально, я думаю), выясняя, как справиться с этим.Дозирование с использованием RxJS?
У меня есть API, который возвращает массив объектов JSON. Мне нужно пройти через эти объекты, и для каждого объекта сделать еще один вызов AJAX. Проблема в том, что система, которая обрабатывает каждый вызов AJAX, может обрабатывать только два активных вызова за раз (поскольку это довольно сложная для ЦП задача, которая подключается к настольному приложению).
Мне было интересно, как я мог бы достичь этого, используя RxJS (используя версию 5 или 4)?
РЕДАКТИРОВАТЬ: Кроме того, возможно ли одновременное выполнение цепочки шагов. т.е.
Downloading File: 1 Processing File: 1 Converting File: 1 Uploading File: 1 Downloading File: 2 Processing File: 2 Converting File: 2 Uploading File: 2 Downloading File: 3 Processing File: 3 Converting File: 3 Uploading File: 3
Я пытался сделать что-то вроде:
Rx.Observable.fromPromise(start())
.concatMap(arr => Rx.Observable.from(arr))
.concatMap(x => downloadFile(x))
.concatMap((entry) => processFile(entry))
.concatMap((entry) => convertFile(entry))
.concatMap((entry) => UploadFile(entry))
.subscribe(
data => console.log('data', new Date().getTime(), data),
error => logger.warn('err', error),
complete => logger.info('complete')
);
Однако это не похоже на работу. DownloadFile, например, не дожидается завершения процесса processFile, convertFile и uploadFile, скорее, следующий будет запускаться снова, как только предыдущий завершится.
http://xgrommx.github.io/rx-book/content/observable/observable_instance_methods/subscribe.html – cport1
@ cport1 - связанный пример выполняется один за другим, не дожидаясь какой-либо операции async. Это отличается от того, что я прошу. – NRaf