获取不同的webapi响应并以同步方法处理数据

时间:2017-09-28 08:20:18

标签: javascript angular typescript rxjs es6-promise

我正在服务中实现一个方法,用于初始化indexedDB数据。 该方法应该在方法 Ordini_Sincronizza 中调用webapi,获取结果并处理索引的数据库。

代码是这样的:

  SyncCustomer(codCli: string): Observable<boolean>
  {
    this.mdService.Ordini_Sincronizza(codCli).subscribe(
      data => {

        this._DBService.Configurazione.clear().then(
          act => {
            let itm = new ConfigurazioneFlat();

            itm.codIva = data.configurazione.codIva;
            itm.notOrd = data.configurazione.notOrd;
            itm.ordini_nota = data.ordiniArticoli.nota;

            this._DBService.Configurazione.add(itm);
            console.log('INITIALIZED: Configurazione_Flat');
          }
        );

        this._DBService.Configurazione_Sconti.clear().then(
          act => {
            for (let itm of data.configurazione.sconti) {
              this._DBService.Configurazione_Sconti.add(itm);
            }
            console.log('INITIALIZED: Configurazione_Sconti');
          }
        );

        this._DBService.Configurazione_TipiOmaggio.clear().then(
          act => {
            for (let itm of data.configurazione.tipiOmaggio) {
              this._DBService.Configurazione_TipiOmaggio.add(itm);
            }
            console.log('INITIALIZED: Configurazione_TipiOmaggio');
          }
        );

        this._DBService.Listino_Testata.clear().then(
          act => {
            for (let l of data.listini) {
              this._DBService.Listino_Testata.add(l.testata);
            }
            console.log('INITIALIZED: Listino_Testata');
          }
        );

        return Observable.of(true);
      },
      error => {
        console.log(error);
        return Observable.of(false);
      });

    return Observable.of(null);   

  }

该方法放在SyncService( typescript 服务)内,如果出错则全部正常或错误,则返回true。

现在我想在组件中使用这个服务方法,我这样做:

  DownloadData()
  {
    this.syncService.SyncCustomer(this.p_codCli).subscribe(
      data => {
        alert('ok');        
      },
      error => {
        alert('err');
        console.log(error);

      });
  }

但我面临的奇怪行为是我立即收到警报('ok')并在控制台收到日志消息后。

我认为它确实是同步/异步调用问题,但我不知道如何管理它。

感谢支持

0 个答案:

没有答案