Node.jsのコールバックの連鎖の中でメモリ解放を行う方法
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 のチェインを続けると途中でメモリが足りなくなります。
何か解決方法はありますか?