我試圖實現RxJS以下行爲:RxJS延遲至少X毫秒
- 火災事件
- 調用HTTP API
- 當API返回,要麼:
- 等待自事件發生後至少X毫秒已過去
- 如果事件發生後X毫秒已經過去,立即返回
,這將是對UX非常有用的,因爲即使調用需要1毫秒,我想顯示加載圖標至少100ms。
我還沒有找到任何方式來執行此與delay
,throttle
,debounce
或其變化。
this.eventThatFires
.switchMap(data => {
let startTime = Date.now();
return this.callHttpService(data)
.delay(new Date(startTime + 1000));
})
我以爲這樣的事情,只是用一個絕對的日期,似乎都與當前時間的時間差,而不是安排爲絕對時間的延遲。
編輯:
似乎沒有內置的運營商,它作爲我描述。我只是創造了它,因爲我將使用它很多在我的應用程序:
import { Observable } from "rxjs/Observable";
function delayAtLeast<T>(this: Observable<T>, delay: number): Observable<T> {
return Observable.combineLatest(
Observable.timer(delay),
this)
.map(([_, i]) => i);
}
Observable.prototype.delayAtLeast = delayAtLeast;
declare module "rxjs/Observable" {
interface Observable<T> {
delayAtLeast: typeof delayAtLeast;
}
}
我現在要用自己的方法來包裝它,但是感謝確認「延遲」不適用於絕對時間。並且也提供替代品! –