如何使用Observable编写函数?

时间:2017-07-28 05:00:11

标签: javascript rxjs observable

我想创建一个返回Observable的函数。函数的描述如下:

  1. 该函数应为delayedAlert(message:string, time:number),返回Observable

  2. 该功能应在setTimeout内包含delayedAlert功能,该功能会在设置&{39; message'之后打印time。值。

  3. 例如:

    delayedAlert(message, time){
    return new Observable//how to implement setTimeout function here?
    

1 个答案:

答案 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));