深入浅出Nodejs中雪崩问题 写的例子

 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 }
原文地址:https://www.cnblogs.com/wenshuo/p/5083144.html