gpt4 book ai didi

node.js - nodejs 中不可能出现无限循环吗?

转载 作者:搜寻专家 更新时间:2023-10-31 22:48:20 26 4
gpt4 key购买 nike

出于某种原因,我正在尝试构思一个简单的脚本,该脚本可以从给定的 Twitter 帐户中检索推文,然后用它来制作一些东西(这不是真正相关的部分)。按照 friend 的建议,我尝试在 nodejs 中进行。他帮了我一点忙(实际上给了我一些代码),我设法让一些东西工作了。因此,如果我想从一个用户那里检索所有推文,它工作得很好。但实际上我想要的是循环检查新推文。但是当我将我的代码包装在一个简单的 while(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);
}
});
}

你知道为什么它不能被包裹在一个循环中吗?预先感谢您的回复:)

最佳答案

不能在node.js中使用while (1)进行IO操作,因为它会阻塞事件循环并阻止所有回调被调用。如果您想永远做某事,则需要改用递归:

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

doThing();
});
}

关于node.js - nodejs 中不可能出现无限循环吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com