设置变量返回回调监听器
Set variable to return of callback listener
我在我的应用程序中使用firebase来处理认证。Firebase有一个侦听器,在身份验证状态发生变化时执行回调。我把它放在firebase utils文件中:
export default {
...
authChanged: (callback) =>{
return firebaseAuth.onAuthStateChanged(callback);
},
...
}
当用户登录/退出时执行回调。我试图在redux-saga中处理这个观察者,每当firebase告诉我状态发生变化时,就向我的reducer发送一个事件。我遇到的问题是,我无法确定如何控制该观察者的动态返回值。现在我在做这个:
export function* loginState(){
Firebaseutils.authChanged(function(user){
if(user){
yield put({type: 'LOGGED_IN', user: {user.email, user.uid}})
}else{
yield put({type: 'LOGGED_OUT'})
}
});
}
我已经确认了if/else条件的工作(只是记录到控制台时的状态变化),但我得到一个错误,如果我试图使用yield。这要么是一个bug,要么是我违反了我不清楚的规则。还有别的办法吗?从最佳实践的角度来看,这似乎确实需要由redux-saga来处理。
只能在生成器函数中使用yield
。与变量和函数不同,yield
在嵌套函数中不可用,而回调函数是嵌套函数。
你可以用普通的调度来调度动作。
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 何时在 Cocos2d-js 3.2 中注销事件监听器和定时回调
- 将事件监听器(在回调函数中)添加到生成的元素中
- Node js事件监听器.使用匿名回调或声明函数来提高性能
- 为什么生成器的下一个函数不能是事件监听器的回调函数?
- 在表单提交事件监听器中执行回调
- 事件监听器内的Javascript回调
- 在套接字.在回调时获取套接字对象中的监听器名称
- 如何使用一个函数来设置一个监听器回调
- 设置变量返回回调监听器
- 监听器上的Angular$在回调时返回未定义的数据值