Как использовать циклическую переменную внутри обратного вызова в JavaScript / TypeScript? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть такой метод в моем файле ts

getInitialBatches() {
    var i = 0;
    for (var dto of this.transferDTO.stockMovesDTOs) {
        i++;

        this.queryResourceService
            .getBatchIdUsingGET(this.batchParams)
            .subscribe((data) => {
                this.allBatches[i] = data;
            });
    }
}

Так как getBacthIdUsingGET является обратным вызовом, он не работает так, как я хочу. увеличивается более чем на 1 к моменту вызова обратного вызова, поэтому я не могу поместить значения в каждый индекс массива allBatches. Значение помещается в случайные индексы. как решить эту проблему?

1 Ответ

1 голос
/ 01 мая 2020

Есть некоторые проблемы с переменными в циклах, и именно это было частью спецификации let, которая позволяет этому работать должным образом. https://wesbos.com/for-of-es6

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

getInitialBatches() {
    for (let i = 0; i < this.transferDTO.stockMovesDOTs.length; ++i) {
        this.queryResourceService
            .getBatchIdUsingGET(this.batchParams)
            .subscribe((data) => {
                this.allBatches[i] = data;
            });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...