3

promise-circuitbreaker ノード モジュールを使用しようとしています。呼び出された関数にパラメーターを渡すことはできますが、呼び出された関数に値を返すことはできません。さらに、理解できないタイムアウトが発生し続けます。明らかに何かが欠けていますが、ドキュメントで解決策が見つかりません ( http://pablolb.github.io/promise-circuitbreaker/ )

私の問題を示すために、非常に単純なサンプルアプリを作成しました。

var CircuitBreaker = require('promise-circuitbreaker');
var TimeoutError = CircuitBreaker.TimeoutError;
var OpenCircuitError = CircuitBreaker.OpenCircuitError;


function testFcn(input, err) {
  console.log('Received param: ', input);
  //err('This is an error callback');

  return 'Value to return';
}

var cb = new CircuitBreaker(testFcn);

var circuitBreakerPromise = cb.exec('This param is passed to the function');

circuitBreakerPromise.then(function (response) {
  console.log('Never reach here:', response);
})
  .catch(TimeoutError, function (error) {
    console.log('Handle timeout here: ', error);
  })
  .catch(OpenCircuitError, function (error) {
    console.log('Handle open circuit error here');
  })
  .catch(function (error) {
    console.log('Handle any error here:', error);
  })
  .finally(function () {
    console.log('Finally always called');
    cb.stopEvents();
  });

これから得られる出力は次のとおりです。

Received param:  This param is passed to the function
Handle timeout here:  { [TimeoutError: Timed out after 3000 ms] name: 'TimeoutError', message: 'Timed out after 3000 ms' }
Finally always called

私の場合、単純な文字列が返されるようにします。タイムアウトエラーが発生したくありません。

testFcn() の //err('This is an error callback') 行のコメントを外すと、次の出力が得られます。

Received param:  This param is passed to the function
Handle any error here: This is an error callback
Finally always called

したがって、呼び出された関数の 2 番目のパラメーターはエラー処理用のようです。

どんな助けでも大歓迎です。

4

0 に答える 0