Отправить запрос синхронизации angular 6

я хочу отправить запрос на синхронизацию этого вложенного цикла for в angular 6. все циклы for должны ждать ответа друг друга. Пожалуйста, приведите пример в https://stackblitz.com

protected plateInfo(debug = true) {
      for (let i = 0; i < 8; i++) {
        for (let k = 0; k < 8; k++) {
          if (k % 2 !== 0) {
            for (let threshBlock = 21; threshBlock < 31; threshBlock++) {
              if (threshBlock % 2 !== 0) {
                for (let treshWeight = 5; treshWeight < 19; treshWeight++) {
                  if (treshWeight % 2 !== 0) {
                   this.getPLateInfo.getInfoPlate({
                      qausLast: i,
                      qausParam: k,
                      treshBlock: threshBlock,
                      treshWeight: treshWeight
                    }).subscribe(_data => {
                      this.result.push(_data)
                      _data.input1 = i
                      _data.input2 = k
                    })
                  }
                }
              }
            }
          }
        }
      }
}

что ты уже испробовал?

Brandon Taylor 15.05.2019 21:35

Пожалуйста, не добавляйте случайный мусор в свой пост, чтобы обойти ограничения качества SE. Вместо этого добавьте фактические детали. См. также Как спросить

Zoe stands with Ukraine 15.05.2019 21:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
123
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте использовать ожидание/асинхронность

async getResult(): MyCustomObject {
    if (typeof this.result === 'undefined') 
    {
        // save result
        this.result = await this.service.call()
        .toPromise()
        .then(resp =>resp as MyCustomObject);//Do you own cast here

    }
    return this.result;
}

но я использую угловой 6

Fuad 15.05.2019 21:35

Да, $q для AngularJS

robert 15.05.2019 21:46

но как дождаться результата обратного вызова этого вложенного цикла for

Fuad 15.05.2019 21:57
Ответ принят как подходящий

Что вам нужно, это

concatMap does not subscribe to the next observable until the previous completes,

from([your source array])
    .pipe(
        concatMap(
            (item in your array) => {
                return this.getPLateInfo.getInfoPlate(....
            }
        )
    )
    .subscribe(
        (received data from your api call) => {
            process received data here...
        }
    );

импортировать их из:

import { from } from 'rxjs';
import { concatMap } from 'rxjs/operators';

Дополнительная информация о concatMap здесь.

Обновлено:

Вот рабочий стекблиц

Ваша исходная функция «plateInfo» сделает более 1000 вызовов API, надеюсь, вы знаете, что делаете.

В любом случае, мне пришлось ограничить количество элементов в массиве, чтобы сайт stackblitz оставался отзывчивым.

Пожалуйста, приведите пример в stackblitz.com

Fuad 15.05.2019 22:57

Другие вопросы по теме