Всего у меня есть 2 функции, одна функция, которая возвращает новое обещание и разрешается в переменную, например:
function promiseTest(data) {
const delay = 200;
return new Promise(resolve => setTimeout(() => resolve(data), delay));
}
а затем еще одна функция, где я вызываю эту функцию, а затем вставляю для переменной data объект JSON.
function getInfo() {
return promiseTest(require('./allData.json'));
}
Итак, мой вопрос: как мне прочитать данные, которые Promise разрешает из функции getInfo, просто в простом console.info?
Скажите: console.info(getInfo().data) (но, очевидно, это не работает, но, надеюсь, поможет с тем, что мне нужно).



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


С промисами вы должны использовать/извлекать данные, используя .then(); так
getInfo().then((data) => console.info(data));
Есть ли особая причина, по которой вам нужно использовать обещание? Ваш пример подходит для простого использования функции setTimeout
Значение, которое возвращает обещание, передается в качестве первого параметра в функцию .then.
См.: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then
В вашем случае это может быть: getInfo().then(данные => console.info(данные));
Надеюсь это поможет.
Есть несколько способов сделать это.
JavaScript представил ключевые слова async и await несколько лет назад. Это специальный синтаксис, упрощающий асинхронное программирование. Вы можете создавать свои функции async и использовать await при их вызове. Это в основном обертывает весь беспорядок . then().
async function promiseTest(data) {
const delay = 200;
return new Promise(resolve => setTimeout(() => resolve(data), delay));
}
async function getInfo() {
return await promiseTest(require('./allData.json'));
}
Затем вы можете получить результат getInfo(), ожидая его:
console.info(await getInfo());
Вот некоторые чтения, которые должны вам помочь:
https://javascript.info/async-ожиданиеhttps://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Instructions/async_function
Вы также можете пойти по-старому, используя then:
function promiseTest(data) {
const delay = 200;
return new Promise(resolve => setTimeout(() => resolve(data), delay));
}
function getInfo() {
return promiseTest(require('./allData.json'));
}
getInfo().then(data => console.info(data));
Вы можете передать обратный вызов вашему методу getInfo.
function promiseTest(data) {
const delay = 200;
return new Promise(resolve => setTimeout(() => resolve(data), delay));
}
function getInfo(callback) {
promiseTest(require('./allData.json')).then(data => callback(data));
}
getInfo(data => console.info(data));
Вы не можете просто волшебным образом сделать асинхронную операцию синхронной. Используйте async/await, передавайте обратные вызовы или используйте .then.