Articles of 循环

Q承诺Nodejs如何在循环中解决

我有写在nodejs的代码让我混淆使用Q Promises theFunction() .then(function(data) { var deferred = Q.defer() var result = []; for(i=0; i < data.length; i++) { secondFunc(data.item) .then(function(data2) { data.more = data2.item }); result.push(data); } deferred.resolve(result); deferred.promise(); }); 我想第二个函数里面的数据循环可以推入结果 所以我以前的数据是这样的 [ { id: 1, item: 1, hero: 2 }, { id: 1, item: 1, hero: 2 } ] 像这样 [ { id: […]

如何打破async.js每个循环?

您好我使用node.js asynchronous模块asynchronous实现for循环。 我的问题是:如何打破循环执行并退出循环? 我试图给予return , return false但没有运气。 这里是示例代码: async.until( function() { return goal; }, function(callback) { async.each(_rules, function(rule,callback) { var outcome = true; …. some code …. if(changes){ console.log("hi"); return false;// HERE I NEED TO BREAK } else callback(); }, function(err){ } ); if (!changes || session.process) goal = true; callback(); }, function(err){ callback(session); } […]

()循环的Node.js在每个循环中返回相同的值

我正在使这个非常简单的应用程序来帮助我探索nodejs,并且我有一个特定的处理程序,它根据数据库中的top10消息生成HTML代码。 我有问题循环通过消息的代码段,并调用生成HTML的函数,并将结果附加到我的HTMLstring。 function CreateMessageboard(BoardMessages){ var htmlMessageboardString = ""; [… Console debug code …] for(var i = 0; i < BoardMessages.length;i++){ (function(){ var j = i; console.log("Loading message %d".green, j); htmlMessageboardString += MessageToHTMLString(BoardMessages[j]); })(); } } 我认为我的问题是由于JavaScript处理循环的方式,与我读的closures有关,这是我上面尝试使用的或asynchronous方式nodejs处理我的function。 现在10个结果很好的从数据库返回,但最后的消息在每个循环处理。 我也尝试过,而不是做var j = i,把value作为函数参数,并在闭包中传递它,它返回相同的结果。 我有一种感觉我错过了解决我的问题的重要知识,我可以在这个问题上得到启发吗? 编辑:我欢迎给任何其他信息的代码,我会发布整个git回购,但人们可能不希望游泳通过整个项目来帮助我debugging这个问题,所以我发布了整个function评论提供更多的上下文。

node.js:while循环callback没有按预期工作

知道,虽然Node.js是asynchronous工作,写这样的事情: function sleep() { var stop = new Date().getTime(); while(new Date().getTime < stop + 15000) { ; } } sleep(); console.log("done"); …将调用sleep(),在while循环(15secs)期间阻塞服务器,然后将“完成”打印到控制台。 据我所知,这是因为Node.js只允许JavaScript的主线程访问,因此这个事情的孩子会停止进一步的执行。 所以我明白这个解决scheme是使用callback: function sleep(callback) { var stop = new Date().getTime(); while(new Date().getTime() < stop + 15000) { ; } callback(); } sleep(function() { console.log("done sleeping"); }); console.log("DONE"); 所以我认为这将打印“完成”,并在15秒后。 'done sleeping',因为sleep()函数被调用并被传递给一个callback函数的指针。 当这个函数正在工作(while循环)时,最后一行将被执行(print'done')。 15秒后,当sleep()函数完成时,它调用给定的callback函数,然后打印“完成睡眠”。 显然我在这里明白了一些错误,因为上述两种方式都阻止了。 […]

Node.js中的jQuery.each()?

我必须在JSON数组中循环来获取node一些信息,但我只知道如何在jQuery中使用$.each() 。 所以我想知道node.js中的$.each jQuery函数是否有其他select?

为什么这个node.js循环在112050迭代之后缓慢运行?

我正在玩node.js,我发现这个简单的程序运行得非常慢,我甚至没有等到3分钟后花了多长时间。 var fs = require ('fs') var s = fs.createWriteStream("test.txt"); for (i = 1; i <= 1000000; i++) s.write(i+"\n"); s.end() 我尝试了使用不同的值,发现1-112050需要3秒,1-112051需要一分钟。 这突然下降是奇怪的。 python中的相同程序,或等效的shell脚本“seq 1 112051”在合理的时间(0-2秒)内运行。 请注意,这个node.js应用运行得更快: var fs = require('fs') , s = [] for (var i = 1; i <= 1000000; i++) s.push(i.toString()) s.push('') fs.writeFile('UIDs.txt', s.join('\n'), 'utf8') 任何人都可以向我解释为什么node.js这样做,为什么dropoff是如此突然?

循环浏览文件夹中的文件Node.JS

我正在尝试循环访问目录中的文件,但是我在实现它时遇到了一些麻烦。 如何拉入多个文件,然后将其移动到另一个文件夹? var dirname = 'C:/FolderwithFiles'; console.log("Going to get file info!"); fs.stat(dirname, function (err, stats) { if (err) { return console.error(err); } console.log(stats); console.log("Got file info successfully!"); // Check file type console.log("isFile ? " + stats.isFile()); console.log("isDirectory ? " + stats.isDirectory()); });

Node.js事件循环

Node.js I / O事件循环是单线程的还是multithreading的? 如果我有几个I / O进程,节点将它们放在外部事件循环中。 它们是按顺序处理(最快的)还是处理事件循环以同时处理它们(…以及在哪些限制中)?

与承诺循环

用承诺做一个while循环的习惯用法是什么? 所以: 如果情况仍然存在,请做一些事情再重复一遍,然后做一些其他的事情。 dosomething.then(possilblydomoresomethings).then(finish) 我这样做,我想知道是否有更好的/更多的idomatic方法? var q = require('q'); var index = 1; var useless = function(){ var currentIndex = index; console.log(currentIndex) var deferred = q.defer(); setTimeout(function(){ if(currentIndex > 10) deferred.resolve(false); else deferred.resolve(true); },500); return deferred.promise; } var control = function(cont){ var deferred = q.defer(); if(cont){ index = index + 1; useless().then(control).then(function(){ deferred.resolve(); }); } […]