Промисы в 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
274 +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
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир