为什么React中的fetch调用中有2个块呢?

时间:2018-05-31 06:35:00

标签: reactjs es6-promise

我正在使用fetch api从后端传输数据,它正如我所期望的那样工作。但是我无法弄清楚为什么在fetch调用中需要2个块然后。

2 个答案:

答案 0 :(得分:0)

在没有看到你的代码的情况下,我假设在第一个“then”块中返回并协调的promise有另一个异步调用,它有自己的返回。例如......

foo() //returns a promise
.then(() => { // called when "foo" resolves the promise
    return bar();
})
.then(() => { // called when "bar" resolves the promise
})
.catch((err) => { //errors
});

如果第一个“then”块没有返回另一个promise,我认为不会调用第二个块。

答案 1 :(得分:0)

Fetch API使用promises,它将请求作为参数,并返回一个解析为Response对象的promise,响应对象包含有关服务器响应的信息,如状态码标题以及您想要的数据的响应正文,Response对象上的某些方法也返回 Promise 所以你需要制作另一个然后块,方法如 response.json() response.text() response.blob() ,这就是为什么你需要然后块,第一个从服务器解析响应,第二个从响应中获取数据。 了解更多

Fetch API

javascript Promise

Using Fetch API