gpt4 book ai didi

javascript - 如何记录来自 fetch api 的响应

转载 作者:行者123 更新时间:2023-12-01 00:56:54 25 4
gpt4 key购买 nike

我正在使用 Promise 记录来自 api 的响应。但每次主体都以空值登录。最有可能是由于异步调用

用于从 fetch 调用 api。

function getDetails(url){
return new Promise((resolve, reject) => {
fetch(url, {mode: 'no-cors'}).then(res => {
resolve(res);
}, error => {
console.log(err);
})
})
}

var u = "https://get.geojs.io/v1/ip/country.json";
getDetails(u).then(function(resp){
console.log(resp);
})

我期望控制台中 api 的响应

最佳答案

fetch()已经返回一个 Promise 所以去掉 new Promise(...) 部分

function getDetails(url) {
return fetch(...).then(...);
}

fetch() 返回 Response object而不是已经为您解析的东西。您必须调用.json()获取由 JSON.parse() 解析的响应。

function getDetails(url) {
return fetch(url, {mode: 'no-cors'}).then(response => response.json());
}

这应该已经可以工作,但是根据您的设置将引发语法错误:

SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data

要解决此问题,请删除 mode: 'no-cors'

将它们加在一起将得到:

function getDetails(url) {
return fetch(url).then(response => response.json());
}

var u = "https://get.geojs.io/v1/ip/country.json";
getDetails(u).then(function(data) {
console.log(data);
})

关于javascript - 如何记录来自 fetch api 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56504591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com