sockets - 使用 saga 生成器从 phoenix socket push 获取响应数据
问题描述
我将 redux-saga 与 phoenix.js 套接字一起使用,并希望在推送后获取响应数据。
export function* make({ channel }, action) {
try {
const q = yield apply(channel, channel.push, ["create", action.payload, 10000]);
} catch() {
}
}
我还看到receivedResp
了 obj 中的键q
:console.log(Object.keys(q)); // ["channel", "event", "payload", "receivedResp", "timeout", "timeoutTimer", "recHooks", "sent", "ref", "refEvent"]
但无法访问像 `q.receivedResp.response.data' 这样的数据。但是 console.log({ q }) 向我展示了一些。
在这种情况下实际是什么q
以及如何获取响应数据
解决方案
我通过promisify push发现了
export const promisifyPush = (channel, ...args) => {
return new Promise((resolve, reject) => {
channel.push(...args)
.receive("ok", function (data) {
console.log({ data })
resolve(data);
})
.receive("error", function (reasons) {
reject({ channel: channel.topic, reasons })
})
.receive("timeout", function (error) {
reject(error)
});
});
};
推荐阅读
- sql-server - 如何在 Travis CI 上安装 ODBC Driver 13 for SQL Server?
- python - 当我遍历包含嵌套字典和列表的字典列表时,如何选择特定值?
- c++ - python unicodedata库的C++实现
- html - 将选项文本旋转 180 度
- c# - 使用 C# 调用 LinkedIn API
- ios - iOS - Expo Notifications.getExpoPushTokenAsync() 未获得令牌
- python - 表单字段的 Python Django PDF 展平
- javascript - 如何使用php中的while循环和javascript显示从数据库中获取的多个图像中的特定点击图像?
- mysql - 检查mysql是否有index null
- python - 字典列表中的唯一元素有效