首页 > 解决方案 > 在 saga 中进行的 API 调用的结果为空

问题描述

我有一个 Redux Saga,它通过自定义库调用 API 端点 (GET),该库返回包含request.get使用 Superagent 库的承诺。当我在我的 React 应用程序中发出此请求时,Chrome 开发工具会显示正确发出的请求和响应,但是在response发出此 GET 后 saga 中的对象为空。我在 StackOverflow 上看到过类似的问题,解决方案(“解决方案”)是让 saga 调用一个新函数,然后调用 API 端点。这并没有解决我的问题。

function* exportFile({ payload }) {
    try {
        const response = yield call(getFile, payload);
        console.log(response); // null

    } catch (err) {
        console.log(err);
    }
}


export function getFile(data) {
    return ajaxClient.get({
        url: '/api/getFile',
        data
    });
}

Payload 在 GET 中正确发送,后端接收参数并发送正确的响应。由于 Chrome 开发工具正确显示请求和响应,我认为问题与 Saga 不等待响应返回有关,因为null在 Chrome 开发工具在“网络”选项卡中显示响应之前,响应已记录到控制台.

标签: redux-saga

解决方案


这个问题与 Redux Saga 无关,这是 ajaxClient 库的问题,它需要 JSON 而不是文件或字符串。


推荐阅读