使用 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)
        });
    });
  };