如何解决搜索全部1000个数组后,如何转到API的第二页
我有此代码,它在站点中搜索特定的item_name
。但它仅搜索网站的首页。因此,我进行了一些更改,添加了k
和krequired
。但是问题是我得到一个错误代码,指出未定义getItemFind
。我也无法向API发送垃圾邮件,因为如果每秒达到一定数量的请求,我的API密钥将被禁用。
if (command === 'item') {
var k = 0
var krequired = 0
var itemFinder = message.content.substring(6)
for (var j = 0; j <= 1000; j++) {
console.log("searching")
if (j >= 950) {
console.log('next page!')
krequired = ++k
j = 0
}
if (k === krequired) {
console.log("searching next page!")
let getItemFind = async () => {
let response = await axios.get(`https://api.hypixel.net/skyblock/auctions?key=<API-KEY>&page=${k}`);
let itemFind = response.data;
k = ++k
j = 0
return itemFind;
}
}
let itemFindValue = await getItemFind();
var searchItem = itemFindValue.auctions[j].item_name
var itemFound = searchItem.toupperCase().includes(itemFinder.toupperCase())
if (itemFound === true) {
var itemNameDescription = itemFindValue.auctions[j].item_name
var itemDescription = itemFindValue.auctions[j].item_lore
var itemDescription = itemDescription.split(/§./).join("");
const itemEmbed = {
color: 0x0099ff,title: `${itemNameDescription}`,fields: [{
title: `\u200b`,value: `${itemDescription}`,inline: false,}],timestamp: new Date(),footer: {
text: '?help [command | category]',},};
message.channel.send({
embed: itemEmbed
})
return j
}
}
}
解决方法
关键字let
和const
的行为与var
不同。如果您在代码块let
内用const
或{...}
定义了一个变量,则您创建的变量仅在该代码块内可用。
// begin code block
if (k === kRequired) {
console.log("searching next page!")
// this is only available in this block of code
let getItemFind = async () => {
let response = await axios.get(`https://api.hypixel.net/skyblock/auctions?key=<API-KEY>&page=${k}`);
let itemFind = response.data;
k = ++k
j = 0
return itemFind;
}
}
// end code block
let itemFindValue = await getItemFind();
在您的情况下,您已经在getItemFind
块中定义了函数if
。有很多方法可以解决此问题。最简单的方法之一就是将变量声明移到函数作用域的顶部。
这里是一个例子,向您展示我的意思
const a = 1;
const b = 2;
if (a < b) {
let c = 3;
console.log('c inside code block',c)
}
console.log('c outside of code block',c)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。