- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在以这种方式执行三个同步调用
this.deletePreallocations()
.flatMap(() => {
return this.postPreallocations();
})
.flatMap(() => {
return this.postPayment();
})
.takeWhile(() => this.isAlive)
.subscribe(
() => { },
err => {
console.log(err);
});
而且每次调用都是这样
deletePreallocations() {
if (this.preAllocationsDeleteIds.length > 0) {
let self = this;
let prealloctionsDeleteIDs = this.preAllocationsDeleteIds.filter(function (item, index) { return self.preAllocationsDeleteIds.indexOf(item) === index; });
return this.paymentsService.deletePreallocations(this.payment.ID, prealloctionsDeleteIDs);
}
return Observable.empty();
}
postPreallocations() {
if (this.preallocationupdatedValues.length > 0) {
return this.paymentsService.postPreallocationsCollection(this.payment.ID, this.preallocationupdatedValues);
}
return Observable.empty();
}
postPayment() {
return this.paymentsService.post(this.payment);
}
所以问题是当返回的 observable 为空时,它不会执行下一个调用。有人可以建议这段代码有什么问题。
谢谢
最佳答案
这是正确的,因为 flatMap
仅适用于 next
通知,而 Observable.empty()
仅发送 complete
通知,仅此而已。
所以你能做的就是不依赖于 next
通知,只是等到上一个 Observable 完成:
this.deletePreallocations()
.concat(Observable.defer(() => this.postPreallocations()))
.concat(Observable.defer(() => this.postPayment()))
.takeWhile(() => this.isAlive)
.subscribe(
() => { },
err => {
console.log(err);
}
);
我正在使用 Observable.defer
仅当您订阅它时才调用它的回调。由于在 this.postPreallocations()
和 this.postPayment()
中,您有一些依赖于内部状态的逻辑,这应该保证这些方法仅在 concat
尝试订阅。
关于Angular 2 - 当返回一个空的可观察对象时,使用平面图的同步 http 调用不执行下一个调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48774342/
我是一个对 Haskell 感兴趣的初学者,我一直在尝试自己实现 flatmap (>>=) 以更好地理解它。目前我有 flatmap :: (t -> a) -> [t] -> [a] flatm
我正在尝试创建一个 searchBar,它通过带有请求的 MKLocalSearch 搜索地址并使用 RXSwift 并绑定(bind)到 RXCocoa 到目前为止,我已经完成了以下工作1.过滤和去
我正在使用 javascript/jquery(基于 DOM,而非 Canvas )构建某种拖放应用程序。 想法是能够在 3D 场景上拖动 div(在 3D 中旋转的 div)。 它在 2D 平面上工
我有这样的情况 class A { private B b; public B getB() { return b; } } 还有另一个B类 class B {
在链 obs1.flatmap(x -> obs2()).subscribe(sub) 如果 obs2 产生错误,它会立即调用 onError 在 sub 上。这是记录在案的: Note that i
在这篇文章中,平面图或平面图是指可以在平面(或等价物)中绘制的抽象图在球体上),以及根据特定此类绘图在每个顶点处的边的圆形顺序。这个额外的信息决定了球体上的嵌入(直到移动顶点和边,使得它们永远不会与任
我有一个 Flux 字符串。对于每个字符串,我必须进行远程调用。但问题是,进行远程调用的方法实际上返回的是 Mono 响应(显然,因为对应于单个请求,所以将有单个响应)。 处理此类情况的正确模式应该是
我对 MapPartition 没有搞清楚。请有人解释一下 Mappartition 的一些用例以及它与 FlatMap 有何不同? 最佳答案 区别在于方法的接口(interface)以及它们的调用方
我有这个问题,我有一个 RDD[(String,String, List[String]),我想“平面化”它以获得一个 RDD[(String ,字符串, 字符串)]: 例如: val x :RDD[
所以这将是我第一次无法通过搜索找到问题的答案.. 我对 D3 和 Javascript 总体来说还很陌生,我想要实现的是在浏览器中从 CAD 工具 (Autodesk Revit) 导出的一些曲线的可
我需要替换多年前构建的 Flash 查看器,以显示来自 AutoCAD 的交互式2D 平面图。 目前,AutoCAD 文件被读取并转换为 XML 文件,其中包含表示平面图对象的多边形的 X 和 Y 坐
我有 2 个 retrofit 电话需要进行 A 和 B: (A):返回一个ArrayList (B):获取 (A) 的结果,它是一个 ArrayList。 (B) 遍历 ArrayList 并使用每
我是一名优秀的程序员,十分优秀!