Порядок отладки httpClient в подписке - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть следующий метод 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 голосов
/ 04 февраля 2019

Это асинхронное кодирование.

В Javascript у вас есть только один поток.

Когда вы используете асинхронное кодирование, такое как Promises, Observables и AJAX, вы запрашиваете у вашего приложения что-то сделать, затем делает что-то, ожидая завершения процесса , и как только процесс завершается.закончено, продолжить обратный вызов .

Это позволяет создавать неблокирующие процессы.Представьте себе, что вам нужно ждать завершения вашего HTTP-вызова, и они занимают по 10 секунд каждый ... Не очень удобно!

В этом случае вы используете Observables из RxJS и делаете HTTP-вызовы.Итак, это асинхронно!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...