【发布时间】:2016-09-12 06:56:40
【问题描述】:
我有一个通过 REST api 更新模型的输入字段。
- 用户写“e”
- 用户等待 400 毫秒(去抖时间)
- 更新后端模型的 http 调用触发
- 用户快速写“eeeeeee”
- http 调用返回更新后的模型,这会覆盖前端中的当前模型
- 文本输入变回“e”,而用户无需执行任何操作
我现在的代码如下所示(RxJS 5.0.0-beta.6):
this.textInput
.valueChanges
.map(change => this.item.text = change)
.debounceTime(400)
.switchMap(
change => this.itemService.save(item)
)
.subscribe(updatedItem => this.item = updatedItem)
我想要发生的是,如果用户写入更多文本,它应该取消之前的 http 调用,即使我们仍在等待去抖动完成。
PS:
flatMapLates()在 RxJS 5 中被重命名为switchMap()
【问题讨论】:
-
这真的是 Rx 问题吗?只需将客户视为权威。如果客户端有数据,假设客户端是对的
标签: javascript rxjs observable