На данный вопрос уже ответили:
Есть простой тектовой файл с одной цифрой внутри, достаем его содержимое с помощью Axios (проект на Node.js, React), в консоль все выводится без проблем, подскажите как записать эту цифру в переменную?
function getValue(filepath) {
let value = null;
axios.get(filepath)
.then(response => {
value = response.data;
console.log(response.data);
})
.catch(error => {
console.log(error);
});
return value;
}
Что сделать, чтобы функция вернула в value то, что находится в responce.data. Выдает либо unidentified либо пустоту...
Судя по всему, метод axios.get
возвращает промис, а значит его выполнение происходит асинхронно. Соответственно, мы не можем просто вернуть его результат в вызвавшей его функции, т.к. на момент завершения работы функции метод может быть ещё не выполнен.
Решение – возвращать промис вместо значения:
function getValue(filepath) {
return new Promise((resolve, reject) => {
axios.get(filepath)
.then(response => {
resolve(response.data);
console.log(response.data);
})
.catch(error => {
reject(error);
});
});
}
После этого мы можем использовать функцию так:
getValue(path).then(value => {
//тут переменная value будет доступна и заполнена
}).catch(error => {
//если произоёдет ошибка при выполнении, она попадёт сюда
});
Все равно undefined
getValueOfFile(filepath) {
let axios = require('axios');
return new Promise((resolve, reject) => {
axios.get(filepath)
.then(response => {
resolve(response.data);
console.log("Responce data".concat(response.data));
})
.catch(error => {
reject(error);
});
});
};
this.getValueOfFile(path).then(value => {
cur_value = value;
console.log("Value = ".concat(value));
}).catch(error => {
//если произоёдет ошибка при выполнении, она попадёт сюда
});
console.log("Cur_value = ".concat(cur_value));
return cur_value;
Выдает в консоли:
Responce data1
Value = 1
Cur_value = undefined
Всем приветЕсть DOM-дерево сайта, в нем есть ссылки на вк - <a href="https://vk