par*_*ent 6 rxjs rxjs-pipeable-operators rxjs6
举个例子:
this.http.get('/getdata').pipe(delay(2000))
Run Code Online (Sandbox Code Playgroud)
我希望此请求至少需要 2 秒才能完成,但不会超过请求完成所需的时间。
换句话说:
如果请求需要1s完成,我希望 observable 在2s内完成。
如果请求需要3s才能完成,我希望 observable 在3s 而不是5s 内完成。
是否还有其他管道delay()可以实现我不知道的这一点,或者是否有必要的话可以为此构建自定义管道?
用例是显示一个加载器,但是如果请求完成得太快,当加载器只是“闪烁”一瞬间时它看起来不太好
要回答所提出的问题,您可以简单地使用combineLatest()组合timer(2000)可观察值和请求可观察值,然后忽略计时器可观察值的结果。它之所以有效,是因为它combineLatest会等到所有可观察量都发出至少一个值后再发出一个值。
combineLatest(this.http.get('/getdata'), timer(2000), x => x)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
497 次 |
| 最近记录: |