使用Observable而不是Promise

时间:2016-11-02 08:21:07

标签: javascript typescript

我在我的一个servlet中使用了这个函数:

private setValues() {
    this.config.socket.on('config.weather', (values:any) => {
      console.log(values);
}

我想外包,所以我得到这样的东西:

private setValues() {
    this.config.load('weather').then((values:any) => {
      console.log(values);
}

套接字服务中的任何一个:

public load(key: string) {
    return new Promise(resolve => {
        this.socket.on('config.' + key, values => resolve(values));
});

这适用于第一次调用,但是当套接字再次触发时,它不会被发送到setValues()函数,因为Promise只能运行一次。

我想我必须使用一个Observable,但我不知道在哪里放置它。

1 个答案:

答案 0 :(得分:0)

我使用了一个主题,现在一切正常:

public load(key: string) {
    let sub = new Subject();
    this.socket.on('config.' + key, values => {
        sub.next(values);
    });
    return sub;
}

private setValues() {
    this.config.load('weather').subscribe((values:any) => {
      console.log(values);
}