5

私はマングースのドキュメントで、私が望むエラーを一般的に処理できることを発見しました。だからあなたは次のようにすることができます:

Product.on('error', handleError);

handleErrorしかし、このメソッドのシグネチャは何ですか? 私はこのようなものが欲しい:

handleError = (err) ->
  if err
    console.log err
    throw err

しかし、これはうまくいきません。

4

2 に答える 2

5

Node では、errorイベントが 1 つの引数 (エラー自体) を提供するのが標準です。私の経験では、追加のパラメーターを提供するいくつかのライブラリでさえ、常に最初にエラーを残すため、署名付きの関数を使用できますfunction(err)

GitHub でソースをチェックアウトすることもできます。errorこれは、何かがうまくいかないときに、エラーを引数としてイベントを発行する事前保存フックです: https://github.com/LearnBoost/mongoose/blob/cd8e0ab/lib/document.js#L1140

JavaScript には、関数に渡されたすべての引数を確認する非常に簡単な方法もあります。

f = ->
  console.log(arguments)

f()                     # {}
f(1, "two", {num: 3})   # { '0': 1, '1': 'two', '2': { num: 3 } }
f([1, "two", {num: 3}]) # { '0': [ 1, 'two', { num: 3 } ] }

それでは、関数が機能していない部分に進みます。あなたのコードはどのように正確に読み取られますか? 名前handleErrorは決して特別なものではありません。次の 2 つのいずれかが必要です。

オプション 1 : 関数を定義し、参照をイベント登録に渡します。

handleError = (err) ->
  console.log "Got an error", err

Product.on('error', handleError)

オプション 2 : 関数をインラインで定義します。

Product.on 'error', (err) ->
  console.log "Got an error", err
于 2012-08-22T04:56:18.417 に答える