Я играю с Rx JS и пытаюсь определить массив смешанных (как по типу, так и по синхронности) значений, а затем передать его на Rx from
.
Однако я бы хотел, чтобы наблюдатели ждали каждого асинхронного значения в массиве и только потом переходили к следующему: так, ObserverA и наблюдательB должны наблюдать только q1
только после 'Three seconds have passed'
и, ну, с трехсекундной задержкой.
Я понимаю, что это может излишне изгибать язык, и, возможно, я что-то упускаю из-за того, как работает Rx, но вот что я попробовал.
import { Subject, from } from 'rxjs';
const testmain = async () =>{
var subj = new Subject()
subj.subscribe({
next: v => console.log(`observer A: ${v}`)
})
subj.subscribe({
next: v => console.log(`observer B: ${v}`)
})
const observable = from([
await setTimeout(() => {return 'Three seconds have passed'}, 3000), // am i not invoking something here or is await in the wrong place? Getting an immediate response with value [Object object]
'q1 ',
'q23',
'error',
'condition',
4,
false,
true])
observable.subscribe(subj)
}
Выход:
observer A: [object Object]
observer B: [object Object]
observer A: q1
observer B: q1
observer A: q23
observer B: q23
observer A: error
observer B: error
observer A: condition
observer B: condition
observer A: 4
observer B: 4
observer A: false
observer B: false
observer A: true
observer B: true