gpt4 book ai didi

javascript - 如何调用异步函数并在另一个函数中获取其响应?

转载 作者:行者123 更新时间:2023-11-29 17:45:59 25 4
gpt4 key购买 nike

我已经编写了从 Chuck Norris 的 API 中获取类别的代码。问题是每当我获取数据时我都会询问。当我在 fetch 函数中使用 console.log(data) 时,它给了我数据。但是当我在其他函数中调用 fetch 函数时,它不起作用。

我的 getCategory() 给出未定义,而我的generateRandomQuotes(e)给出

JSON 中位置 0 处出现意外标记 u

如果有人能帮助我解决我的问题,我将不胜感激。

抱歉我的英语不好。

document.addEventListener('DOMContentLoaded', init);

function init(){
document.querySelector('#generateQuote').addEventListener("click", generateRandomQuote);
getCategory();
}

function doFetch(url){
fetch(url, {
cache: 'no-cache',
headers: new Headers({
'Accept': 'application/json'
})
}).then(function (response) {
if (response.ok) {
return response.json();
}
else {
throw new Error('No response');
}

}).then(function (data) {
return data;

})
.catch(function(error){
console.log(error);
});
}

function generateRandomQuote(e){
e.preventDefault();
let url="https://api.chucknorris.io/jokes/random";
let fetchQuote = doFetch(url);
let quote = JSON.parse(fetchQuote);
console.log(quote);
}

function getCategory(){
let url="https://api.chucknorris.io/jokes/categories";
let fetchCategories = doFetch(url);
console.log(fetchCategories);

}

最佳答案

试试这个代码:-

This is using async / await, that's new with modern JS.

    function init(){
document.
querySelector('#generateQuote').
addEventListener("click", generateRandomQuote);
getCategory();
}


function doFetch(url){
return fetch(url, {
cache: 'no-cache',
headers: new Headers({
'Accept': 'application/json'
})
}).then(function (response) {
if (response.ok) {
return response.json();
}
else {
throw new Error('No response');
}

}).then(function (data) {
return data;

})
.catch(function(error){
console.log(error);
});
}

async function generateRandomQuote(e){
e.preventDefault();
let url="https://api.chucknorris.io/jokes/random";
let fetchQuote = await doFetch(url);
console.log(fetchQuote);
}

async function getCategory(){
let url="https://api.chucknorris.io/jokes/categories";
let fetchCategories = await doFetch(url);
console.log("inside getCatagoty", fetchCategories);
}

init()
<input type= "button" value ="demo" 
id = "generateQuote"
></input>

关于javascript - 如何调用异步函数并在另一个函数中获取其响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49692874/

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