javascript - 承诺没有按预期执行
问题描述
在 fetchUser 操作返回一个承诺后应该调用一个操作。这是获取用户的代码:
fetchUser({ commit }, user) {
let promise = new Promise((resolve, reject) => {
if (user.uid) {
commit("SET_LOGGED_IN", user !== null)
// do something ...
console.log('Resolving promise')
resolve(user);
} else {
commit("SET_USER", null)
console.log('Rejecting promise')
reject();
}
}
});
return promise;
},
并且行动是
someAction: firestoreAction(({ bindFirestoreRef, getters }) => {
let user = getters.user;
let promise = dispatch('fetchUser', {user});
console.log(`promise is ${promise}`);
//-----NEVER EXECUTES THIS STEP, SIMPLY GOES BLANK HERE----
promise.then(function(user) {
return bindFirestoreRef(
//dosomething...
});
return promise;
}),
承诺没有按预期执行。不知道我在这里做错了什么,承诺之后的“然后”永远不会执行。
有人可以指出我在这里做错了什么吗?
解决方案
在传递用户的行中,您将其放在 name 下的对象中user
。
let promise = dispatch('fetchUser', {user});
所以你必须访问user.uid
like user.user.uid
,只需传递user
对象。像这样:
let promise = dispatch('fetchUser', user);
如果您在承诺中添加一个catch
,则该承诺将被解雇
推荐阅读
- bash - 批前缀序号到文件名
- python - 使用 Selenium 时如何在 Firefox 上不显示“Chrome 正在由自动化软件控制”?
- php - 通过 WooCommerce 产品设置中的自定义复选框将类添加到 WooCommerce 页面
- android - 如何根据 MotionLayout 中的方向更改过渡值?
- mysql - 字段列表 mysql 中的未知列 ' ' 并在调用 mysql 函数时传递动态表名
- amazon-web-services - 允许外部 AWS 角色订阅和读取 AWS SNS 主题的正确 terraform 语法是什么?
- excel - VBA 脚本 #VALUE
- c++ - 运行时错误:“ListNode”类型的空指针内的成员访问
- javascript - 监听js变量变化
- python - 试图在树莓派上更新 python