首页 > 解决方案 > 只有当所有请求都完成时,React fetch 才会从回调中获取响应

问题描述

我正在使用 react fetch 每 5 秒定期轮询 GET api 请求。前 8 个请求正常工作,这意味着我会立即收到每个请求的响应,但是当队列中有更多 api 请求等待并且我收到消息“注意:请求尚未完成”时,问题就来了。只有当所有请求都完成时我才得到响应(似乎它等待所有请求完成然后在回调中返回响应)。

如何在不等待所有请求完成的情况下立即获得每个请求的响应?

fetch(url, {
        method: 'GET',
        headers: {
            Accept: 'application/json',
        },
    }).then(function (response) {
        return response.json();
    }).catch(function (error) {
        console.log(error);
    }).then((response) => {
        if (response != null) {
             // Got the response only if all requests are finished
            this.setState({
                ...
            })
        }
    })
}

更多信息,我使用 Spring Boot 作为 API 服务器,GET 端点。

标签: reactjsspring-boot

解决方案


fetch 调用返回一个承诺。因此,您不应立即调用另一个函数,而应提供一个应在 promise 成功解析时调用的函数。


推荐阅读