无法多次调用 fetch api

舒雅

我想在我的项目中多次调用这个 api,当我调用它时,它继续给出一个错误

类型错误:无法在“响应”上执行“json”:主体流已在 main.js 中读取:Line number

我的代码如下

let thisIsUrl = 'https://api.covid19api.com/summary';
let a = fetch(thisIsUrl)
a.then((data) => {
    return data.json()
}).then((apidata) => {
    console.log(apidata)
    return apidata
}).catch((error) => {
    console.log(error)
})


a.then((fetchdata) => {
    return fetchdata.json()
}).then((readingData) => {
    console.log(readingData)
}).catch((err) => {
    console.log(err)
})
TJ克劳德

不会fetch多次打电话您调用它一次,然后尝试多次读取响应正文。这就是为什么当流已经关闭时错误说您正在尝试读取正文 - 当您第一次完成读取它时它已关闭。

如果要两次使用数据,请将其存储在某处并使用两次。

let thisIsUrl = 'https://api.covid19api.com/summary';
let a = fetch(thisIsUrl)
a.then((data) => {
    return data.json()
}).then((apidata) => {
    // **************** Use it twice here
}).catch((error) => {
    console.log(error)
})

如果您想再次获取它,因为它可能已经更新,请fetch再次调用

let thisIsUrl = 'https://api.covid19api.com/summary';
fetch(thisIsUrl)
.then((data) => {
    return data.json();
}).then((apidata) => {
    console.log(apidata);
    return apidata;
}).catch((error) => {
    console.log(error);
});


// Presumably this is later (in time), not immediately after the above
fetch(thisIsUrl)
.then((fetchdata) => {
    return fetchdata.json();
}).then((readingData) => {
    console.log(readingData);
}).catch((err) => {
    console.log(err);
});

最后,这似乎不太可能,但是如果您真的想获取一次并通过承诺链在多个地方使用该结果,请保留承诺 fromthen而不是承诺 from fetch

let thisIsUrl = 'https://api.covid19api.com/summary';
let a = fetch(thisIsUrl)
.then((data) => {
    return data.json()
});
a.then((apidata) => {
    // ***** Use it here
}).catch((error) => {
    console.log(error)
})

a.then((readingData) => {
    // ***** And then again here
}).catch((err) => {
    console.log(err);
});

旁注:您的代码正在成为fetchAPI中的猎物我已经在这篇博文中写到了fetch只拒绝它对网络错误的承诺,而不是 HTTP 错误。您必须通过检查ok响应对象在第一个履行处理程序中自己检查那些

fetch("/your/resource")
.then(response => {
    if (!response.ok) {
        throw new Error("HTTP error " + response.status); // Or better, use an Error subclass
    }
    return response.json();
})
// ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React-js Fetch api在登录期间被多次调用

在页面加载时多次调用React Fetch API

使用 fetch 和方法 get 调用 Api

如何使按钮调用使用fetch API的函数

通过 fetch() 调用 API - 意外的输入结束

在响应中调用“hasOwnProperty”(fetch-api)

无法从 API fetch 访问对象的属性

无法从Fetch API和JSON解析数据

使用 fetch 成功调用 API,但无法从对象中提取单个值

如何防止 RxJS 中的多次 fetch 调用?

在多次fetch()循环后调用函数

无法使用Fetch API从本地加载Deezer API资源

WooCommerce + Ionic:无法注册和结帐 - Fetch API 无法加载

ReactJS Fetch中不同组件的常见API调用

Reactjs fetch 对 api 进行无休止的调用

React Native Fetch API调用未发出请求

如何使用fetch进行通用API调用功能

'BAD REQUEST' 在 JavaScript 中使用 Fetch 方法调用 API 时

从 fetch API 调用中返回的 URL 访问 SVG 数据

使用 setInterval 为仪表板实现嵌套的 fetch API 调用:fetch()+React+Typesctipt

无法对 api 执行 POST,使用 fetch 时出现错误 400

使用 fetch 的 API - 无法读取未定义的属性“forEach”

Form vs Fetch API无法呈现重定向页面js

Javascript Fetch API:无法检索某些响应标头

使用Fetch API时捕获“无法加载资源”

React Native Fetch无法在本地使用laravel API

fetch api 无法加载,不支持 url 方案“文件”

无法使用 fetch api reactJS/nodeJS 显示我的消息

获取多次发送的API调用