createHoge, createFuga, execPiyo の三つメソッドがあります。

  • createHoge, createFuga はとても大きなデータを生成する関数で、データを生成したらコールバックを呼び出すものです
  • execPiyo は、createHoge, createFuga で生成したデータを処理する関数で、データ処理が完了したらコールバックを呼び出すものです。
    createHoge(function(hoge) {
        createFuga(function(fuga) {
            execPiyo(hoge, fuga, function() {
                console.log("1piyo done.");
                // この時点で hoge, fuga を破棄したい
                createHoge(function(hoge) {
                    createFuga(function(fuga) {
                        execPiyo(hoge, fuga, function() {
                            console.log("2piyo done.");
                        });
                    });
                });
            });
        });
    });

このようなコールバック呼び出しの連鎖で実行できるものとします。で、連続して execPiyo を何回も実行したい時にcreateHoge, createFugaで生成したhoge, fuga をメモリから解放できずに困っています。

RxJSやPromiseやgeneratorを使ってcreateHoge, createFuga, execPiyoの実行を複数回書いてみたんですが、どのやり方でもメモリを食いすぎて途中で落ちてしまいます。

補足: createHoge, createFuga, execPiyo の一連の処理は一回実行するだけなら問題ないんですが、複数回実行したいけど callback のチェインを続けると途中でメモリが足りなくなります。

何か解決方法はありますか?