Как запустить функцию asyn c в цикле for? - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь запустить функцию asyn c, которая отправляет почтовый запрос на сервер и регистрирует ответ в консоли. Всякий раз, когда я запускаю для l oop ничего не происходит. Я проверил другие подобные вопросы здесь на stackoverflow, но в моем случае ничего не работает.

Примечание этот код предназначен для ioni c + angular для android.

Ниже приведен код функции.

postAPI(suffixUrl, queryString, data, header: any = {}) {
    // console.log(suffixUrl + "\n=>", queryString + "\n=>", data + "\n=>", header);
    this.isDisabled = true;

    data = (header.is == 'yes') ? JSON.parse(data) : data;

    let type = this.fileNameSubStringFn(suffixUrl, '?');
    return new Promise(resolve => {
        this.http.post(this.con.baseUrl + suffixUrl + queryString, data)
          .subscribe(res => {
            // res = res.json();
            // res = JSON.parse(res.data);
            console.log("RES:", res);
            this.hideLoader();
            resolve(this.data);
            return;
          }, (err) => {
            this.logFn("ERROR:" + JSON.stringify(err));
            this.isDisabled = false;
            // this.isConnected = false;
          });
    });
}

Ниже приведен код, который обращается к вышеуказанной функции для отправки данных.

var i;

for (i = 0; i < summeriesArray.length; i++) {
    this.postAPI('service_summery', '', JSON.stringify(summeriesArray[i]), { is: 'yes', method: 'post' }).then(data => {
                this.hideLoader();
                this.toast("Successfully saved");
                console.log(data);
    });
}

Код внутри this.postAPI не выполняется, что означает, что данные не публикуются, и я не получаю ошибок, поэтому не знаю, что здесь происходит.

Я ожидаю, что this.postAPI будет успешно запущен в течение LOP.

Спасибо, опубликовано с любовью.

1 Ответ

0 голосов
/ 07 февраля 2020

Вы можете использовать ключевое слово await, поэтому дождитесь следующей итерации до завершения 'postAPI'.

for (i = 0; i < summeriesArray.length; i++) {
  const data = await this.postAPI('service_summery', '', JSON.stringify(summeriesArray[i]), { is: 'yes', method: 'post' })
  this.hideLoader();
  this.toast("Successfully saved");
  console.log(data);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...