(function(){ var ep = new EventProxy(); ep.tail('tpl', 'data', function (tpl, data) { console.log(data + 's : run!'); }); ep.emit('tpl'); var i = 0, times = 10, runId; runId = setInterval(function(){ if(i++ < times){ ep.emit('data',i); }else{ clearInterval(runId); } },10); })();
module.exports = search = function(gitname,username){ var resultArray = [], desUrl =url.replace(/gitname/g,gitname), g_page = 1, hasNext = 1, ep = new EventProxy(); function getDate (){ https.get(desUrl.replace(/pageNumber/g,g_page), function(res) { var source = ""; res.on('data', function(data) { source += data; }); res.on('end', function() { var $ = cheerio.load(source); if(!!$('.blankslate').html()){ hasNext = 0 ; }else{ $('.repo-list-item').each(function(_index,_item) { resultArray.push({ name : $('.repo-list-name',_item).text().replace(/<\/?.+?>/g,"").replace(/\s+/g, ""), description : $('.repo-list-description',_item).text().replace(/\n/g,"").trim(), starTime : $('.repo-list-meta',_item).text().trim() }); }); } ep.emit('search'); }); }).on('error', function() { console.log("获取数据出现错误"); }); } getDate(); ep.tail('search', function () { if(hasNext===1){ g_page ++; getDate(); }else{ var queryArray = []; for(var i= 0,len=resultArray.length;i<len;i++){ queryArray.push(resultArray[i].name); } ep.emit('updateStarItem',queryArray); } }); ep.all('updateStarItem',function(queryArray){ StarItem.prototype.get({ name: { $in: queryArray } },function(err,starArray){ var _insertArray = findNew(resultArray,starArray); console.log(_insertArray.length); if(_insertArray.length>0){ StarItem.prototype.save(_insertArray,function(err,_array){ if (err) { console.log(err); } //console.log(_array); ep.emit('updateStar'); }); }else{ ep.emit('updateStar'); } }); }); ep.all('updateStar',function(){ console.log("yes"); Star.prototype.get({ userName: username },function(err,starArray){ var _insertArray = findNew(resultArray,starArray,1,username); console.log(_insertArray.length); if(_insertArray.length>0){ Star.prototype.save(_insertArray,function(err,_array){ if (err) { console.log(err); } }); } }); }); };
var fs = require('fs'); var ejs = require('ejs'); var EventProxy = require('eventproxy'); var ep = new EventProxy(); // 在所有指定的事件触发后,将会被调用执行 // 参数对应各自的事件名的最新数据 ep.tail('basehead', 'head', 'nav','leftbar', 'foot', 'basefoot', 'main', function(basehead, head, nav, leftbar, foot, basefoot, mainArr) { render(basehead, head, nav, leftbar, foot, basefoot, mainArr[0], mainArr[1]); }); // 读取Base头部模板 fs.readFile('../unitTpl/basehead.html.tpl', 'utf8', function(err, basehead) { if (err) throw err; ep.emit('basehead', basehead); }); // 读取头部模板 fs.readFile('../unitTpl/head.html.tpl', 'utf8', function(err, head) { if (err) throw err; ep.emit('head', head); }); // 读取导航模板 fs.readFile('../unitTpl/nav.html.tpl', 'utf8', function(err, nav) { if (err) throw err; ep.emit('nav', nav); }); //读取左侧导航模板
app.use(express.static(path.join(__dirname, 'public'))); }); app.configure('development', function(){ app.use(express.errorHandler()); }); routes(app); var ep=new EventProxy(); //第一次启动,保证所有初始数据存入数据库,才去updateStock因为其要依赖数据库的数据 var count=0; ep.tail('exsit',function(empty){ ++count; console.log("SavedStockNumber:"+count); if(count==2483) { //存完股票的配置信息到数据库,才启动网站 http.createServer(app).listen(app.get('port'),app.get("ip"),function(){ console.log("Express server listening on port " + app.get('port')); }); } }); //启动应用录入stock.xml到mongo数据库 InsertStockToDb(ep);