如何在 fetch API 请求中包含 if-else 条件?
How to include an if-else condition in fetch API request?
我正在尝试制作一个发送模因的 discord 机器人。我想要一个 NSFW 图片过滤器。我正在使用的 API 在响应中给出 nsfw: true/false
。
这是我的代码
async function getMeme() {
subreddit = memeSubreddits[Math.floor(Math.random() * memeSubreddits.length)];
try {
const res = await fetch(`https://meme-api.herokuapp.com/gimme/${subreddit}`);
const data = await res.json();
return data["url"];
} catch (err) {
console.log(err);
}
}
我想做类似的事情
while (data["nsfw"]===true){
//make fetch request again
}
我将此 meme 作为不和谐消息发送为
client.on("messageCreate", (message) => {
if (message.content === "-meme") {
getMeme().then((meme) => message.channel.send(meme));
}
});
我可以在这里检查 NSFW 条件并说“您请求的图像是 NSFW”吗?
您可以使 getMeme
成为递归函数。
async function getMeme() {
subreddit = memeSubreddits[Math.floor(Math.random() * memeSubreddits.length)];
try {
const res = await fetch(`https://meme-api.herokuapp.com/gimme/${subreddit}`);
const data = await res.json();
if (data.nsfw) return getMeme();
else return data.url;
} catch (err) {
console.log(err);
}
}
我还强烈建议在调用者中捕获错误,而不是在 getMeme
本身中捕获错误(这将导致错误导致已解决的 Promise 解析为 undefined
)。
function getMeme() {
const subreddit = memeSubreddits[Math.floor(Math.random() * memeSubreddits.length)];
return fetch(`https://meme-api.herokuapp.com/gimme/${subreddit}`)
.then(res => res.json())
.then((data) => {
if (data.nsfw) return getMeme();
else return data.url;
});
}
client.on("messageCreate", (message) => {
if (message.content === "-meme") {
getMeme()
.then((meme) => message.channel.send(meme))
.catch((error) => {
// handle errors here
});
}
});
我正在尝试制作一个发送模因的 discord 机器人。我想要一个 NSFW 图片过滤器。我正在使用的 API 在响应中给出 nsfw: true/false
。
这是我的代码
async function getMeme() {
subreddit = memeSubreddits[Math.floor(Math.random() * memeSubreddits.length)];
try {
const res = await fetch(`https://meme-api.herokuapp.com/gimme/${subreddit}`);
const data = await res.json();
return data["url"];
} catch (err) {
console.log(err);
}
}
我想做类似的事情
while (data["nsfw"]===true){
//make fetch request again
}
我将此 meme 作为不和谐消息发送为
client.on("messageCreate", (message) => {
if (message.content === "-meme") {
getMeme().then((meme) => message.channel.send(meme));
}
});
我可以在这里检查 NSFW 条件并说“您请求的图像是 NSFW”吗?
您可以使 getMeme
成为递归函数。
async function getMeme() {
subreddit = memeSubreddits[Math.floor(Math.random() * memeSubreddits.length)];
try {
const res = await fetch(`https://meme-api.herokuapp.com/gimme/${subreddit}`);
const data = await res.json();
if (data.nsfw) return getMeme();
else return data.url;
} catch (err) {
console.log(err);
}
}
我还强烈建议在调用者中捕获错误,而不是在 getMeme
本身中捕获错误(这将导致错误导致已解决的 Promise 解析为 undefined
)。
function getMeme() {
const subreddit = memeSubreddits[Math.floor(Math.random() * memeSubreddits.length)];
return fetch(`https://meme-api.herokuapp.com/gimme/${subreddit}`)
.then(res => res.json())
.then((data) => {
if (data.nsfw) return getMeme();
else return data.url;
});
}
client.on("messageCreate", (message) => {
if (message.content === "-meme") {
getMeme()
.then((meme) => message.channel.send(meme))
.catch((error) => {
// handle errors here
});
}
});