Я хочу добиться с помощью React-jsx следующего:
В одном файле у меня есть функция, которая делает запрос к базе данных и возвращает некоторые данные. В другом файле я хочу вызвать эту функцию, а затем обработать данные. Я хочу выполнить эту операцию, предпочтительно используя async / await, поскольку я видел, что это должно быть возможно, но я не против решения, основанного на обещаниях. Вот что я сделал:
export async function getData() {
try {
await request
.get(url, (err, res) => {
console.info('1', res.body);
return res.body;
}
} catch(e) {
return e;
}
}
И во втором файле, где я вызываю getData ():
import { getData } from './path';
async formatData() {
try {
const data = await getData();
// some formatting
console.info('2', data);
} catch(e) {
return e;
}
}
И вот результат, который я получаю в консоли:
> '2' undefined
предполагая, что ожидание не сработало. Что мне не хватает?
Async / await очень близок к обещаниям. На самом деле они без них не работают. Если вы хотите, чтобы await работал, ему нужно получить обещание, иначе он ничего не сделает.
Что такое request.get, возвращает ли обещание?





async/awaitработает только с доступными объектами (см. «Обещания»). Этот синтаксис не может обрабатывать обратные вызовы стиля узла. Вам нужно использовать обещанную версию того, что естьrequest. Например,axiosилиisomophic-fetch