バックグラウンド キューの長さ、サービス依存関係への応答時間など、アプリケーションの状態に関する一連のメトリックを出力するモジュールを作成したいと考えています。これはDeferredを使用した Node JSです。
var metrics = {
queueLength: function(def) {
// .. Do some stuff to resolve the queue length ..
def.resolve(45); // Example
}
// ... more metrics
}
for (i in metrics) {
def = deferred();
metrics[i](def);
promiselist.push(def.promise);
def.promise(function(result) {
metrics[i] = result;
}
}
return deferred(promiselist)(function(result) {
console.log('All metrics loaded', result, metrics);
});
これにより、出力が生成されます
Metrics loaded [ [Function] ] { queueLength: [Function] }
私が期待していたとき:
Metrics loaded [ 45 ] { queueLength: 45 }
私は2つのことを間違っていると思いますが、それらを「適切に」修正する方法がわかりません:
- その
return deferred([array of promises])(group promise)
考えは通用しないようだ - 各反復で再利用されていることに気付いた
def
ので、複数のメトリックがある場合、おそらく最後のメトリックのみを追跡します。