使用 saga generators 从 phoenix socket push 获取响应数据
Get response data from phoenix socket push with saga generators
我正在将 redux-saga 与 phoenix.js 套接字一起使用,并希望在推送后获得响应数据。
export function* make({ channel }, action) {
try {
const q = yield apply(channel, channel.push, ["create", action.payload, 10000]);
} catch() {
}
}
我也在 q
obj 中看到 receivedResp
键:
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)
});
});
};
我正在将 redux-saga 与 phoenix.js 套接字一起使用,并希望在推送后获得响应数据。
export function* make({ channel }, action) {
try {
const q = yield apply(channel, channel.push, ["create", action.payload, 10000]);
} catch() {
}
}
我也在 q
obj 中看到 receivedResp
键:
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)
});
});
};