使用JavaScript截取方法调用参数
我有许多方法可以调用API端点。每个端点都需要一个长度限制为100的id数组。通常,我必须多次调用这些端点(由于糟糕的设计等),因为我有大约400个批次。所以在这个例子中,我最终不得不将id分为4组,并发出4个请求 我有一些低级方法,它们只是使用superagent发出HTTP请求:使用JavaScript截取方法调用参数,javascript,Javascript,我有许多方法可以调用API端点。每个端点都需要一个长度限制为100的id数组。通常,我必须多次调用这些端点(由于糟糕的设计等),因为我有大约400个批次。所以在这个例子中,我最终不得不将id分为4组,并发出4个请求 我有一些低级方法,它们只是使用superagent发出HTTP请求: getProducts (ids, token) { return Request .send({ ids : ids }) } 其中有相当一部分,我不愿意将它们全部更改为将ID拆分为多个集合,而
getProducts (ids, token) {
return Request
.send({ ids : ids })
}
其中有相当一部分,我不愿意将它们全部更改为将ID拆分为多个集合,而是返回一个请求数组
我的想法是创建某种形式的包装器,可以拦截调用,将id分解为多个集合,然后返回一个请求数组。也许是这样的:
var chunk = function (op) {
return _.wrap(op, function (func, interceptor) {
var args = interceptor(_.drop(arguments, 1));
return func.apply(this, args);
});
}
我一直坚持的是如何使用这种方法首先生成集合,然后生成请求。如果我想保留getProducts的签名,似乎真的很难做到
var requests = chunk(getProducts);
是否有其他技术适合于这种方法,或者这简直是疯了?我愿意接受任何替代技术。函数多请求(ID、令牌){
function multiRequest(ids, token) {
var CHUNK_SIZE = 100;
var requests = [];
for (var i = 0; i < ids.length; i += CHUNK_SIZE) {
requests.push(getProducts(ids.slice(i, i + CHUNK_SIZE)));
}
return requests;
}
var CHUNK_SIZE=100;
var请求=[];
对于(变量i=0;i
您可以像调用getProducts
一样调用它,它将返回一个请求数组,这些请求被分成100个ID组。函数multiRequest(ID,令牌){
var CHUNK_SIZE=100;
var请求=[];
对于(变量i=0;i
您可以像调用
getProducts
一样调用它,它将返回一组请求,这些请求被分成100个ID。谢谢您的回答!但我试图避免的是在我的所有方法中重复上面的代码(或类似代码)。我有大约10个需要以这种方式工作。谢谢回答!但我试图避免的是在我的所有方法中重复上面的代码(或类似代码)。我有大约10个人需要这样工作。