出于某种原因,我试图构思一个简单的脚本,可以从给定的Twitter帐户检索推文,然后用它做一些事情(这不是真正相关的部分).根据朋友的建议,我试着在nodejs中做到这一点.他帮了我一点(实际
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),因为它将阻止事件循环并阻止调用所有回调.如果你想永远做一些事情,你需要使用递归:function doThing () { tweetFetcher.getFrom('twitteraccount', function(tweets) { ... doThing(); }); }