// Qzone 登录QQ控件 loginQzone({commit}, {qNum, ptToken}) { return new Promise((resolve, reject) => { LoginQzone(qNum, ptToken).then(res => { commit("SET_QZONEUSERINFO", {qq: qNum, cookies: res.data}) resolve(res.data) }) }) } 设置值失败
时间: 2023-09-24 08:10:57 浏览: 47
在这段代码中,如果LoginQzone方法返回的是一个错误或者异常,那么Promise对象的状态将变为rejected,但是在这段代码中没有处理Promise对象的reject状态。所以,如果在LoginQzone方法中发生错误或者异常,代码将会静默失败,没有任何提示和处理。为了避免这种情况,可以在Promise对象中使用catch方法来处理错误和异常,并将Promise对象的状态变为rejected。例如:
```
loginQzone({commit}, {qNum, ptToken}) {
return new Promise((resolve, reject) => {
LoginQzone(qNum, ptToken)
.then(res => {
commit("SET_QZONEUSERINFO", {qq: qNum, cookies: res.data});
resolve(res.data);
})
.catch(error => {
reject(error);
});
});
}
```
这样,如果LoginQzone方法发生错误或者异常,Promise对象的状态将变为rejected,并且错误信息将会被返回。
相关问题
// 创建一个新的 store 实例 const store = createStore({ state() { return { // Cargo 存储用户信息 cargoUserInfo: {}, // Qzone QQ空间数据 qzoneUserInfo: {} } }, mutations: { // Cargo 记录用户信息 SET_CARGOUSERINFO(state, cargoUserInfo) { state.cargoUserInfo = cargoUserInfo }, // Qzone 登录数据 SET_QZONEUSERINFO(state, qzoneUserInfo) { state.qzoneUserInfo = qzoneUserInfo } }, actions: { // Cargo 账号登录 loginCargo({commit}, {username, password}) { return new Promise((resolve, reject) => { loginCargo(username, password).then(res => { setCargoToken(res.data.data) resolve(res.data.code) }).catch(err => reject(err)) }) }, // Cargo 获取用户信息 getCargoUserInfo({commit}) { return new Promise((resolve, reject) => { getCargoUserInfo().then(res => { commit("SET_CARGOUSERINFO", res.data.data) }).catch(err => reject(err)) }) }, // Qzone 登录QQ控件 loginQzone({commit}, {qNum, ptToken}) { return new Promise((resolve, reject) => { LoginQzone(qNum, ptToken).then(res => { let userinfo = { 'qq': ${qNum}, 'cookies': ${res.data.data} } console.log(userinfo) commit('SET_QZONEUSERINFO', userinfo) resolve(res.data) }) }) } } }) SET_QZONEUSERINFO赋值失败
这段代码中 `SET_QZONEUSERINFO` 方法的赋值是有问题的,因为 `${qNum}` 和 `${res.data.data}` 应该被包裹在引号中,例如:
```
let userinfo = {
'qq': `${qNum}`,
'cookies': `${res.data.data}`
}
```
这样就可以成功地创建一个包含 `qq` 和 `cookies` 属性的 `userinfo` 对象了。
loginQzone({commit}, {qNum, ptToken}) { return new Promise((resolve, reject) => { LoginQzone(qNum, ptToken).then(res => { let userinfo = { 'qq': ${qNum}, 'cookies': ${res.data.data} } console.log(userinfo) commit("SET_QZONEUSERINFO", userinfo) resolve(res.data) }) }) } 这段代码无法给SET_QZONEUSERINFO赋值
你的代码中,userinfo 对象的属性值没有使用引号将其包裹起来,导致程序在执行时会抛出语法错误。
正确的写法应该是将 userinfo 对象的属性值使用单引号或双引号包裹起来,如下所示:
```javascript
loginQzone({commit}, {qNum, ptToken}) {
return new Promise((resolve, reject) => {
LoginQzone(qNum, ptToken).then(res => {
let userinfo = {
'qq': `${qNum}`,
'cookies': `${res.data.data}`
}
console.log(userinfo);
commit("SET_QZONEUSERINFO", userinfo);
resolve(res.data);
})
})
}
```
在这个示例中,我们将 userinfo 对象的属性值使用单引号包裹起来,并将其赋值给 SET_QZONEUSERINFO mutation 的参数。注意,在 Vuex store 中更新 state 值时,我们必须通过调用 mutation 来触发更新,而不能直接修改 state 的值。