2016-04-07 16 views
1

APIエンドポイントに呼び出すメソッドがいくつかあります。各エンドポイントは、長さ制限が100のIDの配列を期待しています。私は約400のバッチがあるので、これらのエンドポイントへの複数の呼び出しを行う必要があります(デザインなどが悪いため)。 idを4組に分けて4つの要求をする。 JavaScriptを使用したメソッド呼び出しの引数の傍受

は、私は単にた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); 

このアプローチに対応している他のテクニックはありますか、これはまったく狂っていますか?私はどのような代替技術にもオープンです。

答えて

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のグループに分かれリクエストの配列を返します。

+0

ありがとうございます!私が避けようとしていたのは、私のすべての方法の中で、上記のコードを繰り返すことでした。私はこのように働く必要がある約10を持っています。 – backdesk

関連する問題