将 Promise 流转换为值流

Convert a stream of Promises into a stream of values

我对 RxJs 有点陌生,我正在尝试混合 promises 和 observables 的世界。

这是我想要的: 我有一个 observable(称之为 clickObs),它监听点击并因此询问数据库,产生一个承诺,当数据库查询结束(成功)时解析为一个值。 因此,我的可观察对象会从点击流中生成一连串承诺,而我想要的是从该可观察对象中生成相应已解决值的流。

从过去关于 Whosebug 的问题中,我读到了有关 deferflatMapmergeAllfromPromise 的内容,但无法理解如何阐明这四个解决我的问题。

有什么建议吗?

四个都不需要,看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 类似但会忽略旧事件,如果新事件在前一个事件完成之前到达。