function A({ commit, state }) { return new Promise((resolve, reject) => { test() .then((res) => { resolve(); }); }); } function B() { return A().then((e) => { console.log(123); return true; }); } function C() { if(B()){ console.log(456); } } C(); 我想先打印出456,该怎么办
时间: 2024-04-02 20:04:16 浏览: 48
要先打印出456,你可以将函数B返回的Promise对象传递给函数C,并在函数C中使用async/await来等待Promise的解析。下面是修改后的代码示例:
```javascript
async function A({ commit, state }) {
return new Promise((resolve, reject) => {
test()
.then((res) => {
resolve();
});
});
}
async function B() {
await A();
console.log(123);
return true;
}
async function C() {
if(await B()){
console.log(456);
}
}
C();
```
这样修改后,先打印出456,然后再打印出123。
相关问题
loginQzone({commit}, {qNum, ptToken}) { return new Promise((resolve, reject) => { LoginQzone(qNum, ptToken).then(res => { store.state.qzoneUserInfo.qq = qNum store.state.qzoneUserInfo.cookies = res.data.data commit("SET_QZONEUSERINFO",) resolve(res.data) }).catch(err => reject(err)) }) } 如何给SET_QZONEUSERINFO赋值
在上述代码中,可以通过传递一个参数来给 `SET_QZONEUSERINFO` 赋值。具体来说,可以在 `commit` 中传递一个包含 `type` 和 `payload` 的对象,其中 `type` 为 `SET_QZONEUSERINFO`,`payload` 为需要赋给该状态的值。例如:
```
commit("SET_QZONEUSERINFO", { qq: qNum, cookies: res.data.data })
```
这将把 `qq` 和 `cookies` 的值分别设置为 `qNum` 和 `res.data.data`。然后,你的 `SET_QZONEUSERINFO` mutation 可以通过 `payload` 参数来获取这些值并进行相应的状态更新。
actions: { // 登录 Login({ commit }, userInfo) { const username = userInfo.username.trim() const password = userInfo.password const code = userInfo.code const uuid = userInfo.uuid return new Promise((resolve, reject) => { login(username, password, code, uuid).then(res => { setToken(res.token) commit('SET_TOKEN', res.token) resolve() }).catch(error => { reject(error) }) }) },
这是一个基于 Vuex 状态管理库的登录模块的 actions 部分的代码。在 Vuex 中,actions 用于封装异步操作和业务逻辑,可以通过 commit 触发 mutations 来修改 state 中的数据。在该代码中,Login 方法接收一个包含用户登录信息的对象 userInfo 和 Vuex 的 commit 方法。在该方法中,首先对用户名和密码进行了处理,去除了首尾空格。然后,该方法返回了一个 Promise 对象,用于异步处理登录操作。在该 Promise 中,调用了 login 方法,该方法接收四个参数,分别为用户名、密码、验证码和 UUID。login 方法返回了一个 Promise 对象,用于处理登录成功或失败的情况。如果登录成功,则通过 setToken 方法将返回的 token 存储到浏览器的 localStorage 中,并通过 commit 方法触发 SET_TOKEN mutations,将 token 存储到 Vuex 的 state 中。最后,该 Promise 对象调用 resolve 方法,表示登录操作成功。如果登录失败,则调用 reject 方法,表示登录操作失败。整个 Login 方法的作用是将用户登录信息提交到服务器进行验证,并将服务器返回的 token 存储到浏览器和 Vuex 的 state 中,以便其他模块调用。
阅读全文