@Anonymous12344321

Как получить результат из асинхронной функции?

Я очень плохо разбираюсь в асинхронных функциях в js, тк столкнулся с ними неожиданно, даже не ожидая, что они мне понадобятся
<script>
    
let rightElem = {right:null};

async function func()
{
    return {a : 0,  b : 5};
}
    
async function mainFunc(rightElem)
{
    const res = await func();
    
    console.log(res); // {a: 0, b: 5}
    
    rightElem.right = res;
    
    console.log(rightElem.right); // {a: 0, b: 5}
    
    return rightElem; 
}
    
console.log(mainFunc(rightElem)); // promise
    
console.log(rightElem.right); // null
    

    
</script>

имеется асинхронная функция func. Я узнал, что получить объект, который возвращается не в виде promise
можно только создав вторую асинхронную функцию(у меня это mainFunc). Это удалось сделать, но проблема в том, что я не могу сохранить результат уже из mainFunc в переменную rightElem. Я специально создал объект, тк думал, что передав в mainFunc переменную по ссылке удастся изменить ее значение и вне функции mainFunc(не работает). Если возвращать значение из mainFunc, то мы получим promise, но я не нашел информации, как извлекать объект из promise. Что делать?
  • Вопрос задан
  • 770 просмотров
Решения вопроса 1
Однажды шагнув в асинхронщину, из нее не вылезешь.
В синхронном коде результат Промиса обрабатывается в then
https://habr.com/ru/company/vk/blog/269465/

mainFunc(rightElem).then(result => {
  console.log("mainFunc", result)
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
(async () => {
  console.log(await mainFunc(rightElem));
  console.log(rightElem.right);
})();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы