出于测试目的,我创建Observable
个对象,用Http
替换实际http调用返回的observable。
我的observable是使用以下代码创建的:
fakeObservable = Observable.create(obs => {
obs.next([1, 2, 3]);
obs.complete();
});
事实是,这种可观察性立即发出。有没有办法为其排放添加自定义延迟?
我试过了:
fakeObservable = Observable.create(obs => {
setTimeout(() => {
obs.next([1, 2, 3]);
obs.complete();
}, 100);
});
但它似乎不起作用。
答案 0 :(得分:40)
在RxJS 5+中你可以这样做
a = [ [ 1, 2, 3 ] ]
[a] = [ [ 1, 2, 3 ] ]
[[a]] = [ [ 1, 2, 3 ] ]
在RxJS 6 +中
import { Observable } from "rxjs/Observable";
import { of } from "rxjs/observable/of";
import { delay } from "rxjs/operators";
fakeObservable = of('dummy').pipe(delay(5000));
答案 1 :(得分:8)
现在回答的时间已经很晚了......但以防万一有人回到这个问题寻找答案
'delay'是Observable的属性(函数)
fakeObservable = Observable.create(obs => {
obs.next([1, 2, 3]);
obs.complete();
}).delay(3000);
这对我有用......
答案 2 :(得分:5)
您想要的是计时器:
// RxJS v6+
import { timer } from 'rxjs';
//emit [1, 2, 3] after 1 second.
const source = timer(1000).map(([1, 2, 3]);
//output: [1, 2, 3]
const subscribe = source.subscribe(val => console.log(val));
答案 3 :(得分:-2)
import * as Rx from 'rxjs/Rx';
我们应该添加以上导入内容以使打击代码起作用
Let obs = Rx.Observable
.interval(1000).take(3);
obs.subscribe(value => console.log('Subscriber: ' + value));