Допустим, у меня есть это наблюдаемое:
const obs = new Observable((observer) => {
observer.next(0.25);
observer.next(0.75);
observer.next(new ArrayBuffer(100));
observer.complete();
});
Как мне ждать каждого значения с обещанием?
Следующий код вернет только последнее значение (значение перед вызовом complete ()):
const value = await obs.toPromise();
Но я хочу иметь возможность получить каждое значение по пути. Я могу сделать что-то вроде этого:
const value1 = await obs.pipe(take(1)).toPromise();
const value2 = await obs.pipe(take(2)).toPromise();
Но это не идеально, поскольку мне придется каждый раз увеличивать число, а также take(1000)
все равно будет возвращать что-то в примере, даже если есть только 3 значения. Я ищу что-то вроде:
const value1 = await obs.pipe(next()).toPromise(); // 0.25
const value2 = await obs.pipe(next()).toPromise(); // 0.75
const value3 = await obs.pipe(next()).toPromise(); // ArrayBuffer(100)
const value4 = await obs.pipe(next()).toPromise(); // null
Это больше похоже на генератор.
Есть ли способ сделать что-то подобное?