Как извлечь вывод из асинхронной функции - React-native?

У меня вопрос. Как мне получить результат от функции async?

Это мой код:

function kakaoLogin() {
  return async dispatch => {
    RNKakaoLogins.login((err, result) => {
      console.info(result);
    });
    console.info(result);
  };
}

это результат. Как извлечь вывод из асинхронной функции - React-native?

Первый console.info (результат) показывает токен !. но второй console.info (результат) ничего не показывает.

Я хочу получить такой же результат от второго console.info (результат), что и от первого console.info (результат)

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
189
1

Ответы 1

function kakaoLogin() {
  return async dispatch => {
    RNKakaoLogins.login((err, result) => {
      console.info(result);
    });
    console.info(result); // calling result outside its scope will not work
  };
}

Что вы ожидаете с нулевым результатом? Вы используете result вне блока. Если вы хотите что-то сделать в ответ. тогда вы можете сделать вызов метода как.

function kakaoLogin() {
  return async dispatch => {
    RNKakaoLogins.login((err, result) => {
      console.info(result);
      doSomeWork(result);
      // you can call another method here when you get response.
    });
  };
}

function doSomeWork(result){
.. somework
}

Также не следует использовать асинхронный результат сразу после выполнения асинхронного вызова. Вы должны использовать обратный вызов, например, @Khemraj, или метод then () для лучшей читаемости.

Bojan Bedrač 10.08.2018 14:27

Я хочу получить значение токена из второго console.info (результат), например первого console.info (результат)

박형렬 10.08.2018 14:27

Первый console.info (результат); выполняется после разрешения асинхронного метода с результатом. Второй console.info (результат); выполняется с неопределенной переменной результата.

Bojan Bedrač 10.08.2018 14:29

Как вы будете использовать ответ, если ответ не пришел?

Khemraj Sharma 10.08.2018 14:29

Ваш код выполняется так: RNKakaoLogins.login -> second console.info (результат); -> RNKakaoLogins.login возвращает результат -> первый console.info (результат);

Bojan Bedrač 10.08.2018 14:30

Вы можете использовать asyncawait, если хотите войти сразу после входа в систему. Для этого вам нужно написать соответствующий код для функции входа в систему. См. stackoverflow.com/a/34164475/6891563

Khemraj Sharma 10.08.2018 14:31

Другие вопросы по теме