Tag: 循环

setInterval在循环nodejs中

我知道有这样的其他问题,但我的代码似乎并没有工作。 你能看看我的代码,并告诉我我错在哪里。 var mysql = require('mysql'); var client = mysql.createClient({ user: 'jed', password: 'jed8703', host: 'localhost', database: 'jedtest' }); //var query = client.query( // 'INSERT INTO testtable '+ // 'SET testid = ?, name = ?, value = ?', // [1, 'test', 'test'] //); client.query( 'SELECT * FROM testtable', function selectCb(err, results, fields) { if […]

nodejs socket.io在函数循环内部发射

我想通过循环内的socket.io发射。 为此,我做了一个很好的触发器,但是在每个触发器上我调用了socket.emit,并且只有第一个发射器工作。 这里是服务器代码: var server = require('http').createServer(handler); var io = require('socket.io')(server); var fs = require('fs'); var ee = require('events').EventEmitter; var trig = new ee(); server.listen(8080); function handler(req,res){ fs.readFile('./index.html', 'utf-8', function(error, content) { res.writeHead(200, {"Content-Type": "text/html"}); res.end(content); console.log('page affichée'); }); } io.on('connection',function(socket){ socket.on('run',function(v){ run(v); }); trig.on('node',function(i){ io.sockets.emit('node',i); console.log(i); }); }); function run(v){ for(i=0;i<v;i++){ trig.emit('node',i+1); } } […]

打破Nunjucks循环

我已经在各个方面绞尽脑汁,但仍然没有解决办法。 也许有人有一些build议? 我在ExpressJS应用程序中使用Nunjucks作为模板引擎的下面的块。 {%- for course in courses -%} {%- for rcourse in report.courses -%} {%- if rcourse.id == course.id -%} <li {{ 'class="column-pre"' if loop.last else ''}}><span>Cool!</span></li> {%- else -%} <li></li> {%- endif -%} {%- endfor -%} {%- endfor -%} 我的问题:当条件certificate了真值y时,我需要break内部report.courses循环。 基本上,当我打印非空的<li>行时,我需要跳转到循环的下一个迭代。 我知道Nunjucks没有像Jinja2那样的循环,Nunjucks的variables是有作用域的(所以我不能设置一个在if/else语句中被修改的类似sentinel的variables),也不能追加到数组这样我可以使用array.length来确定是否打印<li></li>行。 也许有人有一个聪明的解决scheme?

为http请求延迟一个for循环

我刚刚开始使用JS和Node.js。 我试图build立一个简单的刮板作为第一个项目,使用Node.js和一些模块,如request和cheerio 。 我想在每个包含到数组中的域的每个http请求之间添加一个5秒的延迟。 你能解释一下怎么做吗? 这是我的代码: var request = require('request'); var arr = [ "http://allrecipes.com/", "http://www.gossip.fr/" ]; for(var i=0; i < arr.length; i++) { request(arr[i], function (error, response, body){ console.log('error:', error); console.log('statusCode:', response && response.statusCode); console.log('body:', body); }); }

循环中的JavaScript闭包 – 一个简单实用的例子

var funcs = []; for (var i = 0; i < 3; i++) { // let's create 3 functions funcs[i] = function() { // and store them in funcs console.log("My value: " + i); // each should log its value. }; } for (var j = 0; j < 3; j++) { funcs[j](); // and […]

在循环中调用asynchronous函数时,Node.JS如何处理循环控制?

我的情况如下:有一个IP地址的数组。 我将testing每个IP连接到远程服务器。 如果一个IP连接,其余的IP将被忽略,不会被连接。 我使用了下面的Node.JS代码来完成这项工作,但似乎无法正常工作。 请提供一些提示。 谢谢! // serverip is a var of string splitted by ";", eg "ip1;ip2;ip3" var aryServerIP = serverip.split(";"); console.log(aryServerIP); var ipcnt = aryServerIP.length; // ipcnt = 3, for example for (ip in aryServerIP) { console.log("to process: " + ipcnt); // error here: always print 3 var net = require('net'); var client […]

http.get请求循环closures问题(节点)

我希望能够在命令行中放入一系列URL,并按照提供的顺序获取这些请求的结果。 我已经研究了闭包,以实现这一点,因为callback不会按顺序执行(更有可能是最快的响应) for (var i = 2; i < process.argv.length; i++) { (function(index) { http.get(process.argv[index], function (response) { response.pipe(bl(function (err, data) { console.log(data.toString()); })); }); })(i); } for循环参数。 然后每个迭代调用IIFE匿名函数,然后调用get请求等等。 但是问题依然存在,它被无序执行。 不按用户要求的顺序。 我究竟做错了什么?

什么是正确的方法来找出什么时候一系列的callback(从循环开除)全部执行?

我是Node.js的新手,并且很好奇规定的方法是在一个进程(重复)上运行一个循环,在执行结束时需要执行一些下一步操作,但是只有在所有迭代的callback之后被解雇。 具体来说,我正在进行SQL调用,我需要closuressql连接进行一堆插入和更新后,但由于它们都是asynchronous的,我无法知道什么时候所有的事实上都完成了,所以我可以在会话中调用end()。 显然这是一个远远超出这个特殊例子的问题,所以,我不是在寻找关于sql的具体解决scheme,而是更多的一般的做法,到目前为止,我有点被难住了。 我现在所做的实际上是设置一个全局计数器,以便在每个callback中循环对象的长度递减,看看它什么时候到达零,但是这真的感觉很奇怪,我希望它们更优雅(和以Javascript为中心)的方式来实现这种监控。 TIA

全局对象/作用域和未定义的循环引用

我不确定我是否了解这几个经验的结果: 经验n°1(在新的命令行中): > _ ReferenceError: _ is not defined at repl:1:2 at REPLServer.self.eval (repl.js:110:21) at Interface.<anonymous> (repl.js:239:12) at Interface.EventEmitter.emit (events.js:95:17) at Interface._onLine (readline.js:202:10) at Interface._line (readline.js:531:8) at Interface._ttyWrite (readline.js:760:14) at ReadStream.onkeypress (readline.js:99:10) at ReadStream.EventEmitter.emit (events.js:98:17) at emitKey (readline.js:1095:12) > global { global: [Circular], … _: [Circular], } > _ { global: [Circular], … _: [Circular], […]

NodeJS JavaScript循环改变内容

我有以下代码迭代一个缓冲区寻找一个数据包结束标记。 在这个Buffer对象中可能有几个数据包,所以我使用数据包标记来查找数据,处理数据,然后通过切片缓冲区移动到下一个数据包。 但是我丢失了数据包,因为我在for循环中的条件是buffer.length,缓冲区长度正在变化(越来越短),但是i值始终在增加! 有关我如何解决这个问题的任何想法? bufferFragment是捕获部分数据包并将它们附加到下一个数据包的开头。 这部分工作。 for (var i = 0; i < buffer.length; i++) { if (buffer[i] == 16 && buffer[i + 1] == 3) { dataPacket = buffer.slice(0,i+4); parseData(dataPacket); buffer = buffer.slice(i+4); } else { bufferFragment = buffer; } } UPDATE 看起来,在某些情况下,当循环时间变长时,变得贪婪并捕获比应该更多的数据。 这是一个完整的testing脚本( http://runnable.com/U75ce4esNHFj7028 ) var testBufferText = "100207b097a5085da120f30000461003e39410020736e7bb085d4952890000011003a9401002070c8a1f094ca120f394743e10038907100207a41c22095d4008de0000011003437e1002058e535109a0000a1a9b580000000000a963bf10035c45100207d49681095d4952890000011003827b10020b012447505654472c2c542c2c4d2c302e3130392c4e2c302e3230312c4b2c412a32380d0a10032a621002073e36c3095da120f300004610036e461002072297e7095d49528900000110038c5f1002017866350a8d40622d588135b07db35d000000100305ce1002070c673c0a5da120f30000461003fc331002071c21950a0d5aa29a00fc711003165e10"; var testBuffer = new […]