node.jsのコードを見るとよくdone(null,obj); など、done()が出てきますが検索したりしても公式ドキュメントなど、詳しい説明が全く出てきません。
このdone()を分かりやすく説明してくださる方はいませんでしょうか……??
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
具体的なコード例がないとなんとも言えませんが、二つの可能性があるかと思います。
- 一部のライブラリにあるPromise.prototype.done
一部のライブラリで実装されたPromiseにはdoneがあるそうです。
Promise.prototype.done とは何か?
ただ、これは正式なECMAScript 2015には含まれていませんので、そのうち無くなるかも知れません。
- 関数の仮引数
callbackを複数受け取るような関数ですと、下記のように実装することもあるようです。
JavaScript
1var kurikaeshi = function(count, callback, done) { 2 for (var i = 0; i < count; i++) callback(i); 3 done(count); 4}
繰り返した後にdoneを最後に呼ぶ、といった実装のために、doneという仮引数でcallbackの関数を受け取る事があるようです。
他にもあるかもしれませんが、よく見かけたというコードを示してもらえるとわかるかと思います。
投稿2015/11/07 00:13
総合スコア21735
0
「コールバック関数」で検索してみてください。
fs. readFileを例に取りますと、fs.readFile(file[, options], callback)
とあり、callback
にはerror, data
が渡されることが定義されています。
js
1var fs= require('fs') 2fs.readFile('./whatever.txt',function(error,data){ 3 // ファイルが存在しないときなど、errorに失敗原因が渡る 4 if(error){ 5 // 事後処理が必要な場合 6 // do staff... 7 8 // プロセスの異常終了 9 console.trace(error.message) 10 process.exit(1) 11 } 12 13 // 正常終了 14 console.log(data.toString()) 15 process.exit(0) 16})
この、callback
の第一引数に例外、第二引数に結果、というパターンは外部のライブラリであっても頻出します。慣習でしょうね。
自分でこのような関数を実装するさい、上記のようにcallback関数を引数の最後に受け取るパターンが作法となっています。これは、実装した関数を、他の利用者がプロセスを強制終了させるか、処理を継続させるかを選択させるためです。通常の例外であればtry...catch
文を使用して、後続の処理を継続させることができますが、非同期処理でtry...catch
文はうまく動作しません。
参考
error handling - try-catch in javascript... isn't it a good practice? - Programmers Stack Exchange
投稿2015/11/07 05:56
編集2015/11/07 06:06総合スコア452
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。