Промисы в 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(); }
Проблема в вашем коде заключается в том, что метод 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() для обработки возвращенных данных.
Проблема в вашем коде заключается в том, что метод 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() для обработки возвращенных данных.