Промисы в js, что я делаю не так? Доброго времени суток, помогите пожалуйста разобраться с промисами, допустим есть класс User в нем есть метод user() который должен возвращать данные о залогиненом пользователе .then возвращает данные как нужно, но как мне вызвать эти же данные из метода например let obj_user = new User();
obj_user.user();class User{
user(){
var datauser;
new Promise((resolve)=>{
VK.Auth.login((response)=>{
if( response.status === "connected"){
console.log('Пользователь авторизован')
datauser = response.session.user
resolve();
}

})
}).then(result=>{
console.log(datauser)
return datauser
})

}
}
let obj_user = new User();
obj_user.user()

21 Авг 2019 в 06:22
253 +1
0
Ответы
1

Проблема в вашем коде заключается в том, что метод user() класса User не возвращает значение при вызове obj_user.user(). Вы можете исправить это, добавив return перед вызовом new Promise.

Вот исправленный код:

class User{
user(){
return new Promise((resolve)=>{
VK.Auth.login((response)=>{
if( response.status === "connected"){
console.log('Пользователь авторизован')
let datauser = response.session.user
resolve(datauser);
}
})
})
}
}
let obj_user = new User();
obj_user.user().then(data => {
console.log(data) // Выведет данные о залогиненом пользователе
});

Теперь метод user() возвращает Promise, который разрешится с данными пользователя при успешной авторизации. Когда вы вызываете obj_user.user(), вы можете использовать .then() для обработки возвращенных данных.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 005 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир