抹桥的博客
Language
Home
Archive
About
GitHub
Language
主题色
250
367 文字
2 分
learnyounode 関数型JavaScript

fun 困ったことに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/
作者
Kisnows
公開日
2015-09-24
ライセンス
CC BY-NC-ND 4.0