У меня вопрос. Как мне получить результат от функции async?
Это мой код:
function kakaoLogin() {
return async dispatch => {
RNKakaoLogins.login((err, result) => {
console.info(result);
});
console.info(result);
};
}
Первый console.info (результат) показывает токен !. но второй console.info (результат) ничего не показывает.
Я хочу получить такой же результат от второго console.info (результат), что и от первого console.info (результат)
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
}
Я хочу получить значение токена из второго console.info (результат), например первого console.info (результат)
Первый console.info (результат); выполняется после разрешения асинхронного метода с результатом. Второй console.info (результат); выполняется с неопределенной переменной результата.
Как вы будете использовать ответ, если ответ не пришел?
Ваш код выполняется так: RNKakaoLogins.login -> second console.info (результат); -> RNKakaoLogins.login возвращает результат -> первый console.info (результат);
Вы можете использовать async
await
, если хотите войти сразу после входа в систему. Для этого вам нужно написать соответствующий код для функции входа в систему. См. stackoverflow.com/a/34164475/6891563
Также не следует использовать асинхронный результат сразу после выполнения асинхронного вызова. Вы должны использовать обратный вызов, например, @Khemraj, или метод then () для лучшей читаемости.