Rx Js Подождите, пока обещание не будет выполнено, прежде чем продолжить чтение выдаваемых значений - PullRequest
0 голосов
/ 29 мая 2020

Для каждого испускаемого значения я хочу выполнить некоторую асинхронную обработку.

Моя цель - подождать перед принятием следующего значения, пока myPromise не будет разрешено.

events.pipe(awaitPromise(async event => await myPromise(event))).subscribe();

Примечания:

  • Я не знаю, сколько времени потребуется для выполнения обещания
  • Значения, выданные во время «паузы», не должны отбрасываться

Я не совсем уверен, возможно ли это вообще с Rx Js. Может мне нужно внедрить какую-то другую систему "очередей"? Но мне было бы очень удобно сделать это с Rx Js!

1 Ответ

1 голос
/ 29 мая 2020

Используйте concatMap, вы не потеряете ни одного события, все они будут стоять в очереди, пока обещание не будет выполнено.

events.pipe(concatMap(event=>from(promiseFn(event)))
...