订阅中的httpClient调试顺序

时间:2019-02-04 13:36:10

标签: angular typescript angular-httpclient

我有以下TS方法。当我设置两个断点#1和#2时,它首先对我所有的对象命中#1,然后对我的所有问题都命中#2。

我认为应该换个顺序。

  public getBuild(val) {
    let j_jobs: any;
    for (const project of val.projects) {
      for (const job of project.jobs) {
        this.httpService.get(job.url + 'api/json',
          {
            headers: new HttpHeaders({
              'Content-Type': 'application/json',
              'Authorization': 'Basic TOKENREMOVED'
            })
          })
          .subscribe(
            data => {
              j_jobs = data; //#2
            }
          );
      }
    }
    console.log(j_jobs); // #1
  }```

Can anybody tell me, why angular works like that?


1 个答案:

答案 0 :(得分:0)

那是异步编码。

在Javascript中,您只有一个线程。

在使用异步编码(例如Promises,Observables和AJAX)时,您要求应用程序进行操作,然后在等待过程完成时做一些事情,一旦过程完成, 进行了回调

这使您可以创建非阻塞进程。试想一下,如果您必须等待HTTP调用完成,并且它们每个都花了10秒钟……不是很友好!

在这种情况下,您将使用RxJS中的Observables,并进行HTTP调用。因此,它是异步的!