node.jsのfiber実験
こんなことしてもいいのだろうか
script.js
var Fiber = require('fibers'); (function(){ var check = (function(){ var i = 0; return Fiber.prototype.run.bind(Fiber(function() { // なんかする while (true) { // 完了するまで待つ if(i>=10000){ break; } // いったん抜ける Fiber.yield(i++); } // 完了処理 console.log('OKKKKKKKKKKKKKKKKKKKKKKKKKK'); })); })(); var f = function(){ var r = check(); if(r === undefined){ return; } console.log(r); process.nextTick(f); } f(); console.log('pass'); })();
call.js
var fs = require('fs'); var cache = {}; var callscript = function(scriptname){ var data = null; if( scriptname in cache ){ data = cache[scriptname]; } else{ data = fs.readFileSync(scriptname); cache[scriptname] = data; } eval(data.toString()); } callscript('./script.js'); callscript('./script.js'); callscript('./script.js'); callscript('./script.js'); callscript('./script.js');
node call.js