2017-04-25 12 views
1

私は約束のリスト(ramdaのコード)を返す関数を書いており、それをPromise.all()で囲んですべての約束を解決しなければならないそれを約束のチェーンに送ります。Promise.all([約束のリスト])をramdaに変換

// Returns Promise.all that contains list of promises. For each endpoint we get the data from a promised fn getData(). 
const getInfos = curry((endpoints) => Promise.all(
    pipe(
    map(getData()) 
)(endpoints)) 
); 

getEndpoints() //Get the list of endpoints, Returns Promise 
    .then(getInfos) //Get Info from all the endpoints 
    .then(resp => console.log(JSON.stringify(resp))) //This will contain a list of responses from each endpoint 

promiseFnは、プロミスを返す関数です。

どのようにしてこの機能を完全なRamdaのように変換し、pipePなどを使用するといいでしょうか?誰かがお勧めできますか?

+1

をあなたは多分、より明示的な変数名で、これが何をするかをより詳細に説明できますか?例えば、外側の 'pipe'は何をしますか?これは無関係に見えます。 'promiseFn'は何をするのですか? –

+0

@ScottSauyet質問を更新しました。詳細情報をお探しの場合はお知らせください。ありがとう – geek

+0

私はあなたが "*カレー化された関数を使用するアイデアを打ち破る*"とは何を意味するのか分かりません。 – Bergi

答えて

0

ないあなたが達成したいのかわからが、私はそのように書き換えます:

const getInfos = promise => promise.then(
    endpoints => Promise.all(
    map(getData(), endpoints) 
) 
); 

const log = promise => promise.then(forEach(
    resp => console.log(JSON.stringify(resp)) 
)); 

const doStuff = pipe(
    getEndpoints, 
    getInfos, 
    log 
); 

doStuff(); 
関連する問題