1

今日はとても愚かな気分です。私はこのコードを見続け、追跡しようとしていますが、理解できません:

  1. 実際に行うことの意味
  2. 使い方

私が見る限り、最初に呼び出されたのactioncallFn. そのため、最初に実行すると、スタック配列が作成されます。それから私はそれを失います。アクションには、渡されたコールバックをスタックに追加するだけの関数が割り当てられます。次に、実際にfn が呼び出され、その結果に基づいて、「action」が callFn (?!?) またはコールバックを呼び出す関数に設定されます。その後、スタック内のすべての呼び出しが呼び出されます。

私はコードで迷子になるのが嫌いですが、これは私を少し超えています。私よりも賢い人で「理解」できる人はいますか?

var memoize = function(fn) {
    var callFn = function(callback) {
        var stack = [callback];

        action = function(callback) {
            stack.push(callback);
        };

        fn(function(err, val) {
            action = err ? callFn : function(callback) {
                callback(null, val);
            };

            while (stack.length) stack.shift()(err, val);
        });
    };

    var action = callFn;

    return function(callback) {
        action(callback);
    };
};
4

2 に答える 2

1
于 2013-02-08T23:33:51.017 に答える
0

メモ化は、副作用を使用して、実行時に関数の動作を変更せずに関数のパフォーマンスを向上させる手法です。大まかに言えば、以前の呼び出しで返された関数値を保存し、実際に関数を呼び出す代わりに、関数をさらに呼び出すときにこれらの値を返すことで、メモ化を行うことができます。

続きを読む

于 2013-02-08T23:33:49.420 に答える