367 文字
2 分
learnyounode 関数型JavaScript
困ったことにCMDが、最後の3問目あたりで突然動かなくなってしまい、問題を選択できなくなりました。会社のPCも自分のPCも同じ状況でした。
そのため、最後の3問は諦めました。その3問が何だったのかを探す気力もなく、もうこれでいいやと。
問題を解く過程で、一つ注意すべき点がありました。これはJavaScriptで非常によく使われる方法でもあります。
それは、setTimeout
で遅延された関数は、その前の関数が完全に実行されてからでないと実行されない、ということです。つまり、JavaScriptのプロセスをブロックする可能性があるということです。以下に示します:
function repeat(operation, num) {
// modify this so it can be interrupted
if (num <= 0) return;
operation();
setTimeout(function () {
return repeat(operation, --num);
}, 0);
}
module.exports = repeat;
Operation
は非常に時間のかかる操作を行う関数です。もしsetTimeout
を使って後続の再帰呼び出しを遅延させないと、repeat
関数は実行を終えているのに、多くのoperation
が未完了のまま残ってしまう、という状況が発生します。
その他には特にありません。すべてのコードはこちらにあります。
この記事は 2015年9月24日 に公開され、2015年9月24日 に最終更新されました。3665 日が経過しており、内容が古くなっている可能性があります。
learnyounode 関数型JavaScript
https://blog.kisnows.com/ja-JP/2015/09/24/learnyounode-functional-javascript/