Получить изменённую переменную в функции
Использовал js и vue.js (и ещё api но вопрос не про неё)
this.moves = '';
for (let i = 0; i in response.moves; i++){
P.getMoveByName(response.moves[i].move.name).then(this.moves, function (response) {
this.moves = this.moves + 'текст;
});
this.moves
}
нужно после
P.getMoveByName(response.moves[i].move.name).then(this.moves, function (response) {
this.moves = this.moves + 'текст;
});
получить this.moves.
this - т.к это vue.js
Ответы (1 шт):
давайте по порядку.
зачем Вы используете for...in? Это устарвшая практика. Лучше использовать for...of для перебора массива (а у Вас 'moves' это 100% массив).
this.moves = '';
for (const moves of response.moves){
P.getMoveByName(moves.move.name)
далее вам нужно разобраться с асинхронным кодом: Во-первых, по лучшим практикам не стоит вставлять асинхронный код в циклы. В Вашем случае предлагаю сначала подгружать нужные данные в виде обширного массива и далее распределять их по приложению. Использовав подобную архитектуру у Вас пропадает и ошибка связанная с вышеперечисленным кодом. Во-вторых, если Вы все же настаиваете на своём решении, или же нет возможности подгрузить массив данных в состояния приложения при создании компонента, то попробуйте следующее:
P.getMoveByName(response.moves[i].move.name).then((res, rej) => {
if (res) this.moves.push(res + 'текст');
else if (rej) console.log('Ошибка получения данных массива фильмов');
});