-
-
Notifications
You must be signed in to change notification settings - Fork 224
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(async): エラーファーストコールバック #509
Conversation
Deploy preview for js-primer ready! Built with commit 0445cff |
source/basic/async/README.md
Outdated
} | ||
}); | ||
// failtureTaskは失敗するため、`error`にはErrorオブジェクトが入る | ||
callTaskAsync(successTask, (error, result) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
このサンプルやっぱり長いなー。
2/3ぐらいにしたい…
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/successTask/failtureTask/では・・・?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
直します
setTimeout(() => { | ||
try { | ||
const result = task(); | ||
callback(null, result); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これ一回result変数で受けているのはなんででしょう・・・?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
特別な理由はないですが、result
という変数名で意味を説明したいのとインラインで書くと評価順が異なるため結果は同じですがやりたいことが異なるためですね。
callback(null, task());
このケースでは結果が同じになりますが、もし左辺に副作用があるものが存在していた場合に結果が異なる場合がありますね。(await
を使うと実際そういうミスをしやすい。副作用があるかどうで書き方を変えるよりは、同じ書き方を取れる方を優先したいですね)
やりたいことはtask()
の返り値をcallback
に渡したいのであって、callback
を呼ぶためにtask()
を実行するではないからですね。(いいたいこととしては、「まずtask()
を評価する」ことが先にある点ですね)
短くかけますが余計なミスが発生する可能性もあるので、一時変数result
を作ったほうが誰が読んでも同じに読めると思えるからですね。
source/basic/async/README.md
Outdated
} | ||
}); | ||
// failtureTaskは失敗するため、`error`にはErrorオブジェクトが入る | ||
callTaskAsync(successTask, (error, result) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/successTask/failtureTask/では・・・?
#94