截取方法使用JavaScript调用参数

时间:2016-04-07 23:14:57

标签: javascript

我有许多调用API端点的方法。每个端点都需要一个长度限制为100的id数组。我经常要对这些端点进行多次调用(由于设计不良等),因为我有大约400个批次。所以在这个例子中我最终不得不将id分成4组并发出4个请求。

我有一些低级方法,只使用superagent发出HTTP请求:

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);

还有其他一些针对这种方法的技术,还是只是简单的疯狂?我对任何替代技术持开放态度。

1 个答案:

答案 0 :(得分:0)

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;
}

您可以像调用getProducts一样调用它,它会返回一组请求,这些请求被分成100个ID组。