javascript - 执行 fetch 后调用方法

标签 javascript reactjs

我正在发出返回字符串数组的提取请求。

fetch(linkFetch)
            .then(resp => resp.json())
            .then(arr => {
                that.setState({
                    images: arr
                });
            })
            .then(this.test());

在最后一行你可以看到我尝试调用方法 test() 它只是试图访问在 fetch() 请求中设置的状态.

test(){
    console.log(this.state.images[1]);
}

控制台日志“未定义”

但是,如果我将 test() 分配给按钮或其他东西,以便我可以手动调用它,它工作正常,这让我相信当我调用 .then(this.test ()); 在获取请求中,它实际上是在设置状态之前被调用的。

如何确保在提取请求中设置状态后调用它?

最佳答案

您传递给 then 的参数必须是一个函数

您正在调用 this.test 立即(即在异步函数解析之前)并传递其返回值(undefined没有 return 语句)。

您已经在代码的上一行中找到了如何正确执行此操作的示例。

fetch(linkFetch)
    .then(resp => resp.json())
    .then(arr => {
        that.setState({
            images: arr
        });
    })
    .then(() => {
        this.test();
    });

关于javascript - 执行 fetch 后调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49430522/

相关文章:

javascript - 如何为函数值创建 React Context 而无需一直重新渲染

reactjs - mixReducers 导致代码中断

javascript - 如何使用 html 将 Windows Phone(但不是桌面 Windows)重定向到移动网站?

javascript - jQuery fn 属性

javascript - JavaScript 支持多线程吗?如果没有,我应该如何实现 sleep()?

reactjs - React 和 Typescript 的振幅

javascript - 尝试使用 fetch 和 pass 模式 : no-cors

arrays - React 重新渲染循环

javascript - 支持后进回调的设计模式(例如处理 hashchange)

javascript - 如何在javascript中查找字符串中的特殊字符并将其存储在数组中