我想创建一个返回Observable
的函数。函数的描述如下:
该函数应为delayedAlert(message:string, time:number)
,返回Observable
。
该功能应在setTimeout
内包含delayedAlert
功能,该功能会在设置&{39; message
'之后打印time
。值。
例如:
delayedAlert(message, time){
return new Observable//how to implement setTimeout function here?
答案 0 :(得分:4)
使用Observable.create
创建observable,并在第一个回调中编写逻辑来填充observable,在您的情况下是setTimeout
。
function delayedAlert(msg, time) {
return Observable.create(
observer => setTimeout(() => observer.onNext(msg), time));
}
然后使用它:
delayedAlert("Hi, Sally", 1000).subscribe(msg => alert(msg));
但是,如果您使用的是observable,则不需要使用setTimeout
;改为使用delay
,应用于of
,从单个值创建一个可观察的值:
function delayedAlert(msg, time) {
return Observable.of(msg).delay(time);
}
由于这样写起来很容易,你可能根本不需要delayedAlert
功能:
const observable = Observable.of("Hi, Sally").delay(1000);
observable.subscribe(msg => alert(msg));