有没有办法让函数从url返回JSON而不是打印它Fetch API?[duplicate]

kd3sttzy  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(127)
    • 此问题在此处已有答案**:

(41个答案)
5小时前关门了。

    • 我想要一个函数,使用fetch api从给定的url返回一个json**(如果你有更好的API选项,请告诉我,因为我还在学习promise等)
    • 我尝试过**
// [1] with await, I couldn't return, just print on the console
// what needs to change to be able to return instead of printing???
function displayJson1(url) {
    async function getJsonPromise(url) {
        const response = await fetch(url);
        const promise = response.json();  // should i put an await here?? the result was the same
        return promise;
    }

    const promise = getJsonPromise(url);
    promise.then((data) => console.log(data));
}

// [2] with .then, I couldn't return, just print on the console
// what needs to change to be able to return instead of printing???
function displayJson2(url) {
    const fetchPromise = fetch(url);

    fetchPromise
        .then((response) => response.json())
        .then((data) => console.log(data))
}

在这两种情况下,我都尝试替换

console.log(data)

作者

let json;
json = data;

return json;

但由于某种原因,它没有工作,如果你也能向我解释为什么json = data没有工作,我将不胜感激。

    • 我期望/希望发生的事情:**返回JSON(使用fetch API,使用then或await,如果你能告诉我如何让这两个函数返回一个使用这两种语法的JSON,那就更好了!)
    • 实际结果:**两个函数displayJson1displayJson2都打印JSON(实际上我只想返回JSON)

简而言之,我需要getJson1(使用await)和getJson2(使用. then)函数,而不是displayJson1displayJson2函数

bpzcxfmw

bpzcxfmw1#

只需编写一个函数,不需要编写两个函数。

async function getJsonPromise(url) {
        const response = await fetch(url);
        return response.json();
    }

当你调用函数的时候,就像下面这样。

getJsonPromise().then((response)=>{
            console.log("Data: ",response.data)
        })

相关问题