我正在寻找一种方法来创建一个HTTP请求池,并有一个计时器,将发送他们每x
秒。
我正在使用axios
作为我的HTTP客户端,并想知道axios
中是否有一个钩子来处理发送前的请求,将其保存在这个池中并立即解析,然后我的计时器将异步处理实际的请求。
我想象自己有这样的能力:
const pool = [];
setInterval(() => {
const promises = [];
while(pool.length){
const { url, data, config } = pool.pop();
delete config.usePool;
// This request will be send to the server
promises.push(axios.post(url, data, config);
}
await Promise.all(promises);
}, 5000);
// this `axios.hook` not really exists, im looking for a way to implement it (this is my actual question)
axios.hook = (url, data, config) => {
if(config?.usePool){
pool.push({ url, data, config });
}
};
// This request won't send but save in the pool
const res = axios.post('/my/url', { a: 1, b: 1 }, { usePool: true });
1条答案
按热度按时间dojqjjoe1#
对于大小为
8
的请求池,可以使用以下实现:您可以在此处找到https代理的更多配置选项:https://nodejs.org/api/http.html#new-agentoptions
没有一个选项可以按照您的期望及时地将请求间隔开,尽管这种方法的有用性是有争议的。