在回调中调用Observable函数?

时间:2018-07-06 19:52:18

标签: javascript typescript rxjs observable

在A类中,我具有RestorePassword函数,在其中使用具有可观察类型的服务authenticationService

class A {

public constructor(public b: B) {
     b.register([this.RestorePassword.bind(this)])
}

public RestorePassword(data: AbstractControl) {
    alert("Called");
    this.authenticationService.RestorePassword({}).subscribe(result => {
      console.log(result);
    }, error => console.log('Could not load artists: ' + error));
  }
}

在构造函数中,将在类B中注册方法RestorePassword

class B {
  private functionsList: Function[];
  public register(functionsList: Function[]) {
        this.functionsList = functionsList;
  }

  public iterate(_form: IForm) {
    for (let i = 0; i < this.functionsList.length; i++) {
      if (typeof this.functionsList[i] === 'function') {
        this.functionsList[i](_form.form.controls);
      }
    }
  }
}

因此,在C类中,我从类iterate()中调用方法:B

class C {
   public construct(b: B, form: Form){
     b.iterate(form);
   }
}

方法public iterate();工作时,它将调用类A中的函数:

this.functionsList[i](_form.form.controls);

它有效,并且我收到消息:alert("Called");。但是订阅后出现一个奇怪的错误,它涉及异常:

error => console.log('Could not load artists: ' + error));
  

无法加载美工:将圆形结构转换为JSON

我不知道,为什么会这样...

authenticationService 中的方法RestorePassword是:

public RestorePassword(data: any): Observable<any> {

    const data = {
      '$type': 'ReadRequest',
      'query': 'restorePassword',
      'parameters': {'mobilePhone': ''}
    };

    return this.http.post(null, data)
      .map(res => (<any>res)._body === '' ? {} : res.json().result)
      .catch(this.handleError);

  }

0 个答案:

没有答案