gpt4 book ai didi

javascript - 在javascript中 promise 解决和拒绝

转载 作者:搜寻专家 更新时间:2023-10-30 22:19:02 24 4
gpt4 key购买 nike

我正在尝试在 NativeScript 上构建一个移动应用程序,我在其中创建了一个用于授权的类,该类具有一个 login() 函数,该函数具有以下代码:

export default class NitsEditorAuth {
//Finding logged-in user.
isLoggedIn() {
return store.getters.access_token ? true : false;
}
//For Login user
login(user) {
const postData = {
grant_type: 'password',
username: user.email,
password: user.password,
client_id: clientId,
client_secret: clientSecret,
scope: '',
provider: provider
}
const authUser = {}
axios.post(authUrl, postData).then(response => {
if(response.status === 200)
{
authUser.access_token = response.data.access_token;
authUser.refresh_token = response.data.refresh_token;
axios.get(apiUrl + 'user/log', {headers: getHeader()}).then(response => {
if(response.status === 200){
authUser.email = response.data.email;
authUser.first_name = response.data.first_name;
authUser.last_name = response.data.last_name;
authUser.userRole = response.data.role;
store.commit('save', authUser);
return new Promise(function (resolve, reject) {
resolve('Login successful')
});
}
})
}
})
.catch((err) => {
if(err.response.status === 401){
// this.error = err.response.data.message
return new Promise(function (resolve, reject) {
reject('Validation error')
});
}
else
return new Promise(function (resolve, reject) {
reject('Something went wrong')
});
})
}

}

我在我的 main.js 文件中包含了这个类:

const nitsEditorAuth = new NitsEditorAuth();
Vue.prototype.$nitsEditorAuth = nitsEditorAuth;

我在我的 Vue-methods 中调用这个函数,例如:

login() {
this.$nitsEditorAuth
.login(this.user)
.then(() => {
this.processing = false;
this.$navigateTo(Home, { clearHistory: true });
})
.catch(() => {
this.processing = false;
this.alert(
"Unfortunately we could not find your account."
);
});
},

但我收到错误说明:

TypeError: Cannot read property 'then' of undefined. Frame: function:'login'

帮我解决这个问题。谢谢。

最佳答案

简单的解决方法就是在函数外包装一个 promise。并删除其余部分。例如。

javascript node.js vue.js nativescript nativescript-vue
I'm trying to build a mobile application on NativeScript where I've created a class for authorization which has a login() function which has following codes:

export default class NitsEditorAuth {
//Finding logged-in user.
isLoggedIn() {
return store.getters.access_token ? true : false;
}
//For Login user
login(user) {
const postData = {
grant_type: 'password',
username: user.email,
password: user.password,
client_id: clientId,
client_secret: clientSecret,
scope: '',
provider: provider
}
return new Promise(function (resolve, reject) {
const authUser = {}
axios.post(authUrl, postData).then(response => {
if(response.status === 200)
{
authUser.access_token = response.data.access_token;
authUser.refresh_token = response.data.refresh_token;
axios.get(apiUrl + 'user/log', {headers: getHeader()}).then(response => {
if(response.status === 200){
authUser.email = response.data.email;
authUser.first_name = response.data.first_name;
authUser.last_name = response.data.last_name;
authUser.userRole = response.data.role;
store.commit('save', authUser);

resolve('Login successful')

}
})
}
})
.catch((err) => {
if(err.response.status === 401){
// this.error = err.response.data.message

reject('Validation error')

}
else

reject('Something went wrong')
})
})
}

关于javascript - 在javascript中 promise 解决和拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55181635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com