2017-08-17 18 views
0

new to nodeが面白いですが、2つの引数err/argTimeを持つ関数にデータを渡そうとするときに問題が発生します。 ex:function(err、argTime)エラーファースト関数Node JS

これが私の作品:

queryTrigger(moment()); //the call 
//more code... 

function queryTrigger(argTime) { 
      console.log(argTime); 
     }; 

これは動作しません:

queryTrigger(moment()); //the call 
//more code... 

function queryTrigger(err, argTime) { 
     if(err) { 
      throw err; 
     } else { 
     console.log(argTime); 
     }; 
}; 

任意の洞察力がはるかに高く評価されます!

+0

第2のケースでは、最初のパラメータがerrorであるため、 'queryTrigger(null、moment());'を使用します。 – alexmac

+0

ありがとう!それは速くて、うまくいった。短いフォローアップ:このような単純な関数にエラー引数を追加するのは良い方法ですか? – MangoHeat

+0

通常、非同期関数で使用される 'error'パラメータです。あなたの関数では、それは必要ではありません。 – alexmac

答えて

1

値をエラーとして渡す必要がありますが、値がない場合は値としてnullまたはundefinedのいずれかを使用できます(エラーを表示しない)。あなたのフォローアップのコメントに答えて

// No error: 
queryTrigger(null, moment()); 

// Explicit error: 
queryTrigger((new Error('Error!')), moment()); 

// Variable error from function response: 
queryTrigger(isErrored(), moment()); 

エラーがメインイベントループの外で発生した非同期関数を呼び出すとき、あなたは一般的にのみ、このパターンを必要とする - あなたがそうしていない場合は、あなただけ使用することができますエラーを処理するにはtry/catch

私はベストプラクティスに関してthis answerのステートメントに同意しません。 err引数は基本的には常に最初の引数になり、GitHub/npm上のほとんどの(良い)パッケージとともに、stdlibのほぼすべての非同期関数が続きます。

+0

ベストプラクティスのステートメントにも同意していませんが、私はそれが他の答えの良い側面だと思うので、あなたの答えにいくつかのコードを追加しました。自分自身を書くよりも論理的だと思われる –