【发布时间】:2017-07-30 04:42:09
【问题描述】:
我是 react-redux 的新手。我陷入了向服务器发出动作的情况。服务器反过来发出一个返回承诺的第三方 API 请求。我用于处理服务器中套接字连接的 server.js 文件如下所示
import Server from 'socket.io';
export default function startServer(store) {
const io = new Server().attach(8090);
store.subscribe(
() =>io.emit('curr_news', store.getState().toJS()));
io.on('connection', (socket) => {
socket.emit('curr_news', store.getState().toJS());
socket.on('action', store.dispatch.bind(store));
});
}
正如您所见,动作是客户端发出的,服务器在收到必要的动作后发出适当的请求,然后发出当前状态。下面是一个reducer文件示例
export default function reducer(curr_feeds = CURRENT_FEEDS, action) {
switch (action.type) {
case 'GET_TEST1DATA':
return getTest1data(curr_feeds);
case 'GET_TEST2DATA':
return getTest2data(curr_feeds);
}
}
这里的 getTest1data 和 getTest2data 在向某个第三方 API 发出请求时实质上会返回一个承诺。我的问题是,由于套接字立即发出 curr_news,因此 store.getState() 的值未定义。
我的问题是,一旦承诺解决而不是在那之前,我如何让商店观察并发出套接字?提前感谢您的帮助。
【问题讨论】:
标签: node.js websocket redux react-redux