2025-01-30 05:00:11

'操作符'中的' vs '

是可观察对象之间唯一的区别。和Observable.from arguments format?比如Function.prototype.call和Function.prototype.apply?

Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})

当前回答

在传递一个类数组结构(包括字符串)时,注意of和from之间的区别是很重要的:

Observable.of([1, 2, 3]).subscribe(x => console.log(x));

会立刻打印出整个数组。

另一方面,

Observable.from([1, 2, 3]).subscribe(x => console.log(x));

逐个打印元素。

对于字符串,行为是相同的,但在字符级别。

其他回答

从数组、promise或iterable中创建可观察对象。只接受一个值。对于数组、可迭代对象和字符串,所有包含的值都将作为序列发出

const values = [1, 2, 3];
from(values); // 1 ... 2 ... 3

的:创建具有可变数量值的可观察对象,按顺序发出值,但数组为单个值

const values = [1, 2, 3];
of(values, 'hi', 4, 5); // [1, 2, 3] ... 'hi' ... 4 ... 5

一行区别:

       let fruits = ['orange','apple','banana']

from:从数组中逐个生成项。例如

    from(fruits).subscribe(console.log) // 'orange','apple','banana'

of:一次性释放整个数组。例如

 of(fruits).subscribe(console.log) //  ['orange','apple','banana']

注:of运算符可以表现为from运算符与展开运算符

 of(...fruits).subscribe(console.log) //  'orange','apple','banana'

不完全是。当将数组传递给Observable.from时,它与Observable.from之间唯一的区别是。是参数传递的方式。

然而,Observable.from将接受一个参数

可订阅对象、Promise对象、类observable对象、Array对象、可迭代对象或要转换的类数组对象

Observable没有类似的行为。的,它总是只接受值并且不执行转换。

from操作符获取事件源。从(源)

let array = [1,2,3,4,5]
from(array); //where array is source of events, array[of events]


let promise = new Promise(function(resolve, reject) {
  // executor (the producing code, "singer")
});
from(promise); //where promise is source of event, promise(of event)





let observable = Observable.create(function(observer) {
  observer.next(1);
  observer.next(2);
  observer.next(3);
  observer.next(4);
  observer.next(5);
  observer.complete();
});
from(observable); // where obsservable is source of events. 

运算符of接受单个事件。(event1, event2, event3)

of(1,2,3,4,5); // where 1,2,3,4,5 are individual events

在传递一个类数组结构(包括字符串)时,注意of和from之间的区别是很重要的:

Observable.of([1, 2, 3]).subscribe(x => console.log(x));

会立刻打印出整个数组。

另一方面,

Observable.from([1, 2, 3]).subscribe(x => console.log(x));

逐个打印元素。

对于字符串,行为是相同的,但在字符级别。