Наблюдаемые проталкивают свои данные асинхронно
Это не правильно. Может быть как синхронным, так и асинхронным
Цитата в вашем сообщении указывает на
[Symbol.iterator]
, а не на новый ES2015
[Symbol.asyncIterator]
.
Этот подход является более гибким, потому что значения могут прийти
синхронно или асинхронно
Таким образом, по сравнению с [Symbol.iterator]
, Observable не блокирует поток и может работать как на синхронных, так и на асинхронных источниках.
Сравнение наблюдаемого с [Symbol.asyncIterator]
, одна важная цитата из MDN:
В настоящее время нет встроенных объектов JavaScript, которые имеют
Ключ [Symbol.asyncIterator] установлен по умолчанию
То есть [Symbol.asyncIterator]
против Observable
:
[Symbol.asyncIterator]
const myAsyncIterable = new Object();
myAsyncIterable[Symbol.asyncIterator] = async function*() {
yield "hello";
yield "async";
yield "iteration!";
};
(async () => {
for await (const x of myAsyncIterable) {
console.log(x);
// expected output:
// "hello"
// "async"
// "iteration!"
}
})();
Наблюдаемые
of('hello', 'async', 'iteration!').subscribe(console.log)