将 Promise 流转换为值流
Convert a stream of Promises into a stream of values
我对 RxJs 有点陌生,我正在尝试混合 promises 和 observables 的世界。
这是我想要的:
我有一个 observable(称之为 clickObs
),它监听点击并因此询问数据库,产生一个承诺,当数据库查询结束(成功)时解析为一个值。
因此,我的可观察对象会从点击流中生成一连串承诺,而我想要的是从该可观察对象中生成相应已解决值的流。
从过去关于 Whosebug 的问题中,我读到了有关 defer
、flatMap
、mergeAll
和 fromPromise
的内容,但无法理解如何阐明这四个解决我的问题。
有什么建议吗?
四个都不需要,看flatMap
or its sibling flatMapLatest
clickObs.flatMapLatest(function() {
//Access the db and return a promis
return database.query(queryObj);
})
.subscribe(function(result) {
//Result is implicitly flattened out
/*Do something with the result*/
});
flatMap
将隐式地将 promise 或类数组对象转换为 Observable
并展平结果序列。 FlatMapLatest
类似但会忽略旧事件,如果新事件在前一个事件完成之前到达。
我对 RxJs 有点陌生,我正在尝试混合 promises 和 observables 的世界。
这是我想要的:
我有一个 observable(称之为 clickObs
),它监听点击并因此询问数据库,产生一个承诺,当数据库查询结束(成功)时解析为一个值。
因此,我的可观察对象会从点击流中生成一连串承诺,而我想要的是从该可观察对象中生成相应已解决值的流。
从过去关于 Whosebug 的问题中,我读到了有关 defer
、flatMap
、mergeAll
和 fromPromise
的内容,但无法理解如何阐明这四个解决我的问题。
有什么建议吗?
四个都不需要,看flatMap
or its sibling flatMapLatest
clickObs.flatMapLatest(function() {
//Access the db and return a promis
return database.query(queryObj);
})
.subscribe(function(result) {
//Result is implicitly flattened out
/*Do something with the result*/
});
flatMap
将隐式地将 promise 或类数组对象转换为 Observable
并展平结果序列。 FlatMapLatest
类似但会忽略旧事件,如果新事件在前一个事件完成之前到达。