1 var EventEmitter = require('events').EventEmitter; 2 var proxy = new EventEmitter(); 3 proxy.setMaxListeners(0); 4 var selectSqls = []; 5 var flags = []; 6 for(var i=0;i<10;i++){ 7 flags.push('ready'); 8 for(var j=0;j<10;j++){ 9 selectSqls.push(j); 10 } 11 } 12 13 var count=1; 14 var http=require('http'); 15 var select = function (num,callback) { 16 proxy.once(''+num,callback); 17 if(flags[num] === 'ready'){ 18 flags[num] = 'pending'; 19 http.get("http://www.cnblogs.com/", function(res) { 20 console.log("Got response: " + count++); 21 proxy.emit(''+num,num); 22 flags[num] = 'ready'; 23 //res.resume(); 24 }).on('error', function(e) { 25 console.log("Got error: " + e.message); 26 }); 27 } 28 }; 29 30 var callNum= function(num){ 31 console.log(num + ':ok'); 32 }; 33 for(var num=0;num<selectSqls.length;num++){ 34 var sqlNum = selectSqls[num]; 35 //console.log(sqlNum); 36 select(sqlNum,callNum); 37 }