Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取不同的webapi响应并以同步方法处理数据_Javascript_Angular_Typescript_Rxjs_Es6 Promise - Fatal编程技术网

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

Javascript 获取不同的webapi响应并以同步方法处理数据,javascript,angular,typescript,rxjs,es6-promise,Javascript,Angular,Typescript,Rxjs,Es6 Promise,我正在一个服务中实现一个用于初始化indexedDB数据的方法。 该方法应在方法Ordini_Sincronizza中调用webapi,获取结果并处理索引数据库 代码如下: SyncCustomer(codCli: string): Observable<boolean> { this.mdService.Ordini_Sincronizza(codCli).subscribe( data => { this._DBService.

我正在一个服务中实现一个用于初始化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);   

  }
但我面临的奇怪行为是,在控制台中收到日志消息后,我立即收到警报(“ok”)

我认为这肯定是一个同步/异步调用问题,但我不知道如何管理它


多亏了支持

,所以您希望接收第一个控制台日志,并且在完成所有操作后调用
警报('ok')
?mxr7350可能重复,我希望在执行所有清除/插入命令后执行警报('ok')。尝试使用forkJoin或promise。所有这些都是为了简化编解码器,您能给我举个例子吗?
  DownloadData()
  {
    this.syncService.SyncCustomer(this.p_codCli).subscribe(
      data => {
        alert('ok');        
      },
      error => {
        alert('err');
        console.log(error);

      });
  }