Это единственное различие между Observable.of
и Observable.from
формат аргументов? Вроде и Function.prototype.call
а Function.prototype.apply
?
Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})
Не совсем. При передаче массива Observable.from
, единственная разница между ним и Observable.of
способом передачи аргументов.
Тем не менее, Observable.from
примет аргумент, который
подписываемый объект, Promise, Observable-подобный, Array, итерируемый или похожий на массив объект для преобразования
Нет аналогичного поведения для Observable.of
- который всегда принимает только значения и не выполняет преобразования.
Важно отметить разницу между of
и from
при передаче структуры, подобной массиву (включая строки):
Observable.of([1, 2, 3]).subscribe(x => console.log(x));
напечатал бы весь массив сразу.
С другой стороны,
Observable.from([1, 2, 3]).subscribe(x => console.log(x));
печатает элементы 1 на 1.
Для строк поведение такое же, но на уровне персонажа.
Еще один интересный факт - Observable.of ([]) будет пустым массивом, когда вы подписываетесь на него. Где, когда вы подписываетесь на Observable.from ([]), вы не получите никакого значения.
Это важно, когда вы выполняете последовательную операцию с switchmap.
Пример: В приведенном ниже примере я сохраняю работу, а затем сайты, а затем комментарии в виде потока.
если нет сайта для сохранения, т.е. data.length = 0 в разделе addSite, приведенный выше код возвращает Observable.of ([]) и затем сохраняет комментарии. Но если вы замените его на Observable.from ([]), последующие методы не будут вызваны.
rxfiddle
источник
Разница в одну строку:
from : испускать элементы один за другим из массива. Например
of : испустить весь массив одновременно. Например
Примечание: от оператора может вести себя , как от оператора с оператором спреда
источник
https://stackblitz.com/edit/typescript-sckwsw?file=index.ts&devtoolsheight=100
источник
from
: Создать наблюдаемый из массива, обещания или итерации. Принимает только одно значение. Для массивов, итераций и строк все содержащиеся в них значения будут выводиться в виде последовательностиof
Создание наблюдаемого с переменным количеством значений, генерация значений в последовательности, но массивы как одно значениеисточник