2017-03-03 9 views
0

this questionで説明したように、Angular promiseライブラリ$qは、約束事を含むオブジェクトを取り込むことができ、.then()関数ではオブジェクトキーを使用して結果を取り出すことができます:Q.all()に約束してオブジェクトリテラルを渡す

$q.all({ 
    result1: foo(), 
    result2: bar() 
}) 
.then(function(results) { 
    var fooData = results.result1; 
    var barData = results.result2; 
}); 

普通のQライブラリではこのようなことはありますか? Node.jsアプリケーションでどうすればいいですか?

+1

[いいえ、していないようです](https://github.com/kriskowal/q#combination) – Phil

+1

このされますあなたがリンクしているリポジトリのドキュメントを見たり、コードを書いたり、それが動作するかどうかを調べることで答えられる質問。 – Adam

+1

['Promise.props'](http://bluebirdjs.com/docs/api/promise.props.html)や[' Promise.join'(http://bluebirdjs.com/docs/api) /promise.join.html)from Bluebird – Phil

答えて

1

あなたは常にわずか数行のコードでこれを構築することができます。

function all(object){ 
    if(Array.isArray(object)) 
     return $q.all(object); 

    var keys = Object.keys(object); 
    return $q.all(keys.map(key => object[key])) 
     .then(values => values.reduce((acc, value, index) => { 
      acc[keys[index]] = value; 
      return acc; 
     }, {})); 
} 
+0

'Q'約束は' reduce'メソッドを持っていません。私はあなたが 'then'を忘れたと思いますか? – Bergi

+0

@Bergi、そうです。それを私が直した。 – Thomas

関連する問題