【发布时间】:2017-12-02 13:05:54
【问题描述】:
我正在设计一个消息应用程序,使用 redux 作为我的状态管理器和 firebase 来存储我的数据。我已经开始以这种方式编写我的数据库侦听器:
const fetchMessages = roomKey => async dispatch => {
const db = firebase.database();
let { messages } = await db.ref(`messages/${roomKey}`).on('value');
dispatch({
type: SET_MESSAGES,
payload: messages,
})
};
这基本上就是通过房间键获取消息,然后发送一个将消息设置为 redux 状态的操作。
传统上,这会这样写:
db.ref(`messages/${roomKey}`).on('value', snapshot => {
const messages = snapshot.messages;
dispatch({
type: SET_MESSAGES,
payload: messages,
})
});
每当messages/${roomKey} 发生变化时,我的调度函数就会被执行。我想知道使用 async await 语法是否可以同样工作,如果没有,我该如何让它工作。
希望这是足够的细节!
【问题讨论】:
-
on不返回承诺。once有,但on没有。 -
如果你想在答案中提出这个问题,我会支持你!这完美地回答了我的问题,并给了我一个“当然”的时刻。
-
谢谢。我得到了同样的“当然”时刻,然后是自己的脸。
标签: firebase firebase-realtime-database redux async-await react-redux