我正在尝试从一个 promise 中获取一个值,然后使用该值来解决另一个 promise 。
没有 rxjs
它的工作原理是这样的:
Promise.resolve(1)
.then(value => Promise.resolve(value + 1))
.then(value => console.log(value))
输出:
2
这里是我使用 rxjs
的地方:
const observable = Rx.Observable.fromPromise(Promise.resolve(1))
.map(value => {
return Rx.Observable.fromPromise(Promise.resolve(value + 1));
})
const observer = value => console.log(value);
observable.subscribe(observer);
输出:
PromiseObservable {
_isScalar: false,
promise: Promise { 2 },
scheduler: undefined }
最佳答案
observable.map()
应该将观察到的值 转换为不同的值。如果你在那里返回一个 observable,你将你的值转换为一个 observable,所以你当然不会得到一个值。从本质上讲,您将可观察值变成了可观察值的可观察值。
您将需要使用 concatMap
运算符(通常也称为 flatMap
),如果您想返回一个可观察对象并“解压”:
Rx.Observable.fromPromise(Promise.resolve(1))
.concatMap(value => {
return Rx.Observable.fromPromise(Promise.resolve(value + 1));
})
.subscribe(value => console.log(value));
// logs out 2
关于javascript - 如何将 promise 链接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41739742/