Javascript 如何使用Axios(Shopify API)保持每秒2个GET请求

Javascript 如何使用Axios(Shopify API)保持每秒2个GET请求,javascript,jquery,axios,shopify,shopify-api,Javascript,Jquery,Axios,Shopify,Shopify Api,我有大约650个产品,每个产品都有很多与它相关的附加信息存储在元字段中。我需要将所有的元字段信息存储在一个数组中,这样我就可以过滤某些信息并将其显示给用户。 为了获取所有元字段数据,您需要使用如下产品id对每个产品进行一次API调用:/admin/products/#productid#/metafields.json 因此,我所做的是获取所有产品ID,然后运行“for in循环”,一次调用一个。问题是我遇到了“429错误”,因为我最终每秒发出2个以上的请求。有没有办法像排队系统一样绕过这个

我有大约650个产品,每个产品都有很多与它相关的附加信息存储在元字段中。我需要将所有的元字段信息存储在一个数组中,这样我就可以过滤某些信息并将其显示给用户。

为了获取所有元字段数据,您需要使用如下产品id对每个产品进行一次API调用:
/admin/products/#productid#/metafields.json

因此,我所做的是获取所有产品ID,然后运行“for in循环”,一次调用一个。问题是我遇到了“429错误”,因为我最终每秒发出2个以上的请求。有没有办法像排队系统一样绕过这个问题


让产品=[]
让requestOne=`/admin/products.json?page=1&limit=250`
让requestTwo=`/admin/products.json?page=2&limit=250`
让requestThree=`/admin/products.json?page=3&limit=250`
//let allProducts将返回包含所有产品的数组
让所有的产品
让allMetaFields=[]
合并
$(文档).ready(函数(){
axios
.全部([
get(`${requestOne}`),
get(`${requestTwo}`),
get(`${requestThree}`),
])
.那么(
轴向扩散((第一响应、第二响应、第三响应)=>{
产品推送(
firstResponse.data.products,
secondResponse.data.products,
第三响应数据产品
)
})
)
.然后(()=>{
//将所有3个响应合并到一个数组中
所有产品=[].concat.apply([],产品)
})
.然后(函数(){
for(所有产品中的常量元素){
axios
.得到(
`/admin/products/${allProducts[element].id}/metafields.json`
)
.然后(功能(响应){
让metafieldsResponse=response.data.metafields
所有元字段。推送(元字段响应)
})
}
})
.然后(函数(){
console.log(“所有产品:+所有产品”)
log(“所有产品:+allMetaFields”)
})
.catch((错误)=>console.log(错误))

})
当您点击429错误时,检查
标题后重试,并等待指定的秒数

您还可以在每个响应中使用
X-Shopify-Shop-Api-Call-Limit
头来了解在超出存储桶大小限制之前还有多少请求

请参阅此处的更多详细信息:


顺便说一下,您正在使用基于页面的分页,这种分页很快就会变得不可用


改用。

当您点击429错误时,检查
标题后重试,并等待指定的秒数

您还可以在每个响应中使用
X-Shopify-Shop-Api-Call-Limit
头来了解在超出存储桶大小限制之前还有多少请求

请参阅此处的更多详细信息:


顺便说一下,您正在使用基于页面的分页,这种分页很快就会变得不可用

改用