如果订阅了运算符返回的可观察对象,为什么原始可观察对象会发出值?
Why does the origin observable emits values, if an observable returned by an operator gets subscribed?
需要订阅一个冷的可观察对象来发出值。
当使用诸如 map 之类的运算符时,将返回一个新的可观察对象。
const origin$ = Rx.Observable.from([1,2,3,4]);
const mapped$ = origin$.map(val => val+1);
mapped$.subscribe(console.log);
使用 .subscribe
mapped$
observable 值被发出并记录在控制台中。
但是在这种情况下,mapped$
observable 被订阅了,而不是 origin$
observable。为什么 origin$
observable 开始发出值?
使用任何运算符(老式的 .map()
或现在的 .pipe(map())
)都不是 return 订阅。相反,它 return 是一个 new observable,它将另一个 observable 作为源,但等待任何订阅,直到它有订阅。
需要订阅一个冷的可观察对象来发出值。 当使用诸如 map 之类的运算符时,将返回一个新的可观察对象。
const origin$ = Rx.Observable.from([1,2,3,4]);
const mapped$ = origin$.map(val => val+1);
mapped$.subscribe(console.log);
使用 .subscribe
mapped$
observable 值被发出并记录在控制台中。
但是在这种情况下,mapped$
observable 被订阅了,而不是 origin$
observable。为什么 origin$
observable 开始发出值?
使用任何运算符(老式的 .map()
或现在的 .pipe(map())
)都不是 return 订阅。相反,它 return 是一个 new observable,它将另一个 observable 作为源,但等待任何订阅,直到它有订阅。