Articles of for循环

Node.js:你如何处理循环中的callback?

我正在使用Node.js和Box SDK。 我的(失败!)代码如下所示: var connection = box.getConnection(req.user.login); connection.ready(function () { connection.getFolderItems(0, null, function (err, result) { if (err) { opts.body = err; } else { opts.body = result; var a = []; for (var i=0; i < result.entries.length; i++) { connection.getFileInfo(result.entries[i].id, function (err, fileInfo) { if (err) { opts.body = err; } else { a.push(fileInfo); […]

Javascript:for..in循环运行的次数比预期的多

在下面的代码中,user.roles的实际长度是1.但是,循环运行两次。 当我输出i的值时,第二次迭代显示为“diff”。 切换到普通的for循环解决了这种情况。 但是,我想知道for..in循环的问题是什么。 for (var i in user.roles) { if (user.roles[i].school.equals(schoolId)) { for (var j in user.roles[i].permissions) { for (var k in accessType) { if (user.roles[i].permissions[j].feature == featureKey) { if (user.roles[i].permissions[j][accessType[k]]) { return true; } } } } } } 更新:用户是一个对象,angular色是一个对象数组。 导致此问题的angular色实例如下所示: { "_id": "582d3390d572d05c1f028f53", "displayName": "Test Teacher Attendance", "gender": "Male", "roles": [ { […]

带closures的循环保存状态

请原谅我,如果这可能是一个noobie问题,但这应该工作不应该吗? var elems = [1,2,3,4,5] for (var i = 0; i <elems.length; i++) { return (function(e){ console.log(e) })(i); } 意思是,它应该吐出来 >>node file.js 1 2 3 4 5 由于某种原因,这不是这样做的。 而当它在terminal运行,它吐出来 >>node file.js 1 我错过了什么? 请您详细说明一下。

延迟节点js中的每个循环迭代,asynchronous

我有下面的代码: var request = require('request'); var cheerio = require ("cheerio"); var async= require("async"); var MyLink="www.mylink.com"; async.series([ function(callback){ request(Mylink, function (error, response, body) { if (error) return callback(error); var $ = cheerio.load(body); //Some calculations where I get NewUrl variable… TheUrl=NewUrl; callback(); }); }, function(callback){ for (var i = 0; i <=TheUrl.length-1; i++) { var url = […]

ejs如何迭代对象

我有一个简单的对象文字是地址,如下所示 address: { country: String, state: String, city: String, zip: String, street: String } 它的内部是一个对象,我用express.js渲染函数。 在我的模板页面,我试图在这个对象内循环如下所示: <% for (var prop in artist.address ) { %> <%- artist.address[prop] %> <% } %> 它输出的数据,但包括ejsfunction,如下所示: function () { return this.get(path); } function () { return this.get(path); } yafo 09988 jerusalem israel israeli [object Object] undefined undefined undefined undefined […]

调用循环内的asynchronous函数

var path; for (var i = 0, c = paths.length; i < c; i++) { path = paths[i]; fs.lstat(path, function (error, stat) { console.log(path); // this outputs always the last element }); } 如何访问传递给fs.lstat函数的pathvariables?

在JavaScript中编写非阻塞for循环的最简洁的方法是什么?

所以,我一直在想一个脑筋急转弯 – 如果我有一个很大的对象,我因为某种原因不得不在js节点中迭代,并且不想阻止事件循环。 这是一个非常好的例子,我相信它可以更清晰: var forin = function(obj,callback){ var keys = Object.keys(obj), index = 0, interval = setInterval(function(){ if(index < keys.length){ callback(keys[index],obj[keys[index]],obj); } else { clearInterval(interval); } index ++; },0); } 虽然我确定还有其他的原因,它会混乱,这将执行比一个普通的循环慢,因为setInterval 0实际上不是每0毫秒执行,但我不知道如何做一个循环与多更快的process.nextTick。 在我的testing中,我发现这个例子需要7毫秒的时间来运行,而不是本地for循环(hasOwnProperty()检查,logging相同的信息),这需要4毫秒。 那么,使用node.js编写相同代码的最简洁/最快的方法是什么?