在nodejs中是无法循环的吗?

出于某种原因,我试图构想一个简单的脚本,可以从一个给定的Twitter帐户检索推文,然后用它做些什么(这不是相关的部分)。 遵循朋友的build议,我尝试在nodejs中做到这一点。 他帮了我一些(实际上给了我一些代码),我设法得到了一些工作。 所以,如果我想从一个用户检索所有推文,它的工作完全正常。 但实际上我想要循环并检查新的推文。 但是,当我简单的包装我的代码(1)(并根据需要修改它)时,它什么也不做。 所以这是我的代码:

var tweetFetcher = require('./tweetFetcher'); var codeExtractor = require('./codeExtractor'); var open = require('open'); var fs = require('fs'); var filters = [filter1, filter2]; var hasfirstpart = 0; var code = ""; var tweets; var i = 0; while(1){ tweets = tweetFetcher.getFrom('twitteraccount', function(tweets) { console.log(tweets[0]); if(tweets[0].indexOf(filters[hasfirstpart]) > -1){ code += codeExtractor.extract(tweets[0]).substring(3); hasfirstpart = (hasfirstpart+1)%2; console.log(code); } if(hasfirstpart == 0 && code != ""){ ... } }); } var parser = require('cheerio'); var request = require('request'); exports.getFrom = function(username, cb) { var url = "http://twitter.com/"+username; request(url, function(err, resp, body) { var $ = parser.load(body); var tweets = []; $('.ProfileTweet-text').each(function() { tweets.push($(this).text()); }); if(typeof cb == 'function') { cb(tweets); } }); } 

你有什么想法,为什么它不能被包裹在一个循环? 预先感谢您的回应:)

在IO操作中,不能在node.js中使用while (1) ,因为它会阻塞事件循环并阻止所有callback被调用。 如果你想永远做一些事情,你需要使用recursion:

 function doThing () { tweetFetcher.getFrom('twitteraccount', function(tweets) { ... doThing(); }); }