【发布时间】:2019-07-11 13:09:28
【问题描述】:
const ex = ajax.getJSON('https://httpbin.org/get?a=24');
ex.pipe(pluck('args')).subscribe(x => console.log('Args: ', x));
ex.pipe(pluck('headers')).subscribe(x => console.log('Headers: ', x));
上面的代码(StackBlitz)为每个订阅启动两个 ajax 请求。
为所有现有订阅仅启动一个可观察管道/链的正确方法是什么?
我可以通过为 ajax(StackBlitz) 引入 Promise 来实现:
const p = new Promise(resolve => {
ajax.getJSON('https://httpbin.org/get?a=24')
.subscribe(res => resolve(res));
});
from(p).pipe(pluck('args')).subscribe(x => console.log('Args: ', x));
from(p).pipe(pluck('headers')).subscribe(x => console.log('Headers: ', x));
但我相信一定有更方便的方式。
【问题讨论】:
-
@Vikas,谢谢。现在将了解这一点