【发布时间】:2021-10-23 02:58:48
【问题描述】:
我得到一个随机单词,然后使用该单词生成 GIF。 我的代码在这里只运行一次。我希望它在不刷新浏览器的情况下生成另一个单词并获取另一个图像。
所以,我通过传递使用fetch()获取图像的函数来使用setInerval();
const section = document.getElementById('main');
const text = document.querySelector('.word');
let wordurl = 'https://random-word-api.herokuapp.com/word?number=1&swear=0';
let giphyapikey = '*****************';
//Setinterval
setInterval(wordgif(), 5000);
//make WordGIF call
function wordgif() {
wordGIF().then(results => {
text.innerHTML = results.word;
section.innerHTML = `<img src=${results.imgurl}>`;
}).catch(err => console.error(err))
}
//Async/await
async function wordGIF() {
let fetchword = await fetch(wordurl);
let word = await fetchword.json();
console.log(word)
let fetchgif = await fetch(`http://api.giphy.com/v1/gifs/search?q=${word}&api_key=${giphyapikey}&limit=1`);
let gif = await fetchgif.json();
console.log(gif)
let imgurl = gif.data[0].images['fixed_height_small'].url;
return {
word: word,
imgurl: imgurl
}
}
据我的理解不应该
setInterval(wordgif(), 5000);
每 5 秒调用一次并生成一个新单词和图像?
异步函数如何设置Interval?
【问题讨论】:
-
尝试使用
setInterval(wordgif, 5000);而不是setInterval(wordgif(), 5000);。有区别吗? -
This post 将回答您的所有问题。
标签: javascript