#javascript #function #asynchronous #promise
#javascript #функция #асинхронный #обещание
Вопрос:
Я получаю значения логина и пароля в асинхронной функции и возвращаю их с помощью деструктурирования. Но когда я пытаюсь использовать данные в другой функции, она выдает — undefined. Помогите, пожалуйста. В чем проблема
async function authWithLoginAndPassword() {
const response = await fetch('');
const data = await response.json();
const logUser = data[0].login;
const passwordUser = data[0].password;
return { logUser, passwordUser }
}
submit.addEventListener('click', () => {
let register = authWithLoginAndPassword();
console.log(register.logUser, register.passwordUser)
})
Ответ №1:
Все async
функции возвращают обещание, которое преобразуется в любое значение, полученное return
из этой функции. Итак, при вызове authWithLoginAndPassword()
вам нужно использовать либо .then()
, либо await
чтобы получить разрешенное значение из обещания, которое возвращает функция:
submit.addEventListener('click', async () => {
try {
let register = await authWithLoginAndPassword();
console.log(register.logUser, register.passwordUser)
} catch(e) {
// catch errors
console.log(e);
}
});
или
submit.addEventListener('click', () => {
authWithLoginAndPassword().then(register => {
console.log(register.logUser, register.passwordUser)
}).catch(err => {
console.log(err);
});
});