Tag: foreach

承诺在foreach

我有一些关于逻辑的代码。 我下面的代码块按预期工作,所以willbeUpdatedvariables不能以同步的方式逐字更新。 var willbeUpdated = 1; anArray.forEach(function(i){ getPromisedData(i).then(function(d){ willbeUpdated += d; }); }); if (wiillbeUpdated == something) { // some logic } 所以问题是,我是否必须为这个foreach逻辑再次创build一个承诺的方法, outside if logic的话,那么在这种情况下是否是一个最佳实践或者其他可取的想法呢? 编辑:我问这个问题听到最好或更好的方法嵌套asynchronous函数处理,而不是确切的代码块,谢谢。

Node.js forEach:不能读取未定义的属性''

我从来没有见过这个。 这个错误发生在Node.js 6.3.0和6.9.1 LTS上,为了解决这个问题,我更新了这个错误。 我试图根据一些数据build立一个游戏的统计数据,并不是特别重要。 重要的是,下面的函数是我的游戏类的一部分,失败了: computeStats() { var stats , roster , team, opp, scoreState, oppScoreState , TOI = this.calculateTOIData() , eventCounter = this.calculateEventData() [['home', 'away'], ['away', 'home']].forEach((teams) => { //this is line 74 / error source team = teams[0]; opp = teams[1]; roster = this[team].roster; stats = { //some assignments occur here from […]

asynchronous请求在node.js中的ForEach中

我是新的node.js(和request.js)。 我想从不同path的特定url获取网站正文(在http://www.example.com/path1下方的示例中, http://www.example.com/path2等) )并使用键/值映射(下面的siteData [path])将这些数据logging在一个对象中。 var request = require('request'), paths = ['path1','path2','path3'], siteData = {}, pathLength = paths.length, pathIndex = 0; paths.forEach((path) => { var url="http://www.example.com/"+path; request(url, function(error, response, html){ if(!error){ siteData[path] = response.body; pathIndex++; if(pathIndex===pathLength){ someFunction(siteData); } } }); function someFunction(data){ //manipulate data } 我的问题是: if语句(index ===长度)看起来不像是确定asynchronous请求是否完成的正确方法。 我该如何正确检查请求是否完成? 当我执行上面的代码时,我得到一个错误(node) warning: possible EventEmitter memory leak […]

asynchronous每个和foreachfunction

我试图使用asynchronous的每个函数来调用abc函数,我遇到了一些问题。 代码如下。 我在这里使用for循环的原因是因为当我尝试使用每个函数时,传递到abc函数url的url是以数组而不是string的forms。 所以我想知道是否有任何其他的方式来清除这个,而不必添加for循环。 在添加一对print语句之后,我意识到代码从不执行传递http.get(url [a],newFileLoc,function(error,result){出于某种原因,总是有一个错误消息“async.each(urls,downloadFile (url,函数(){TypeError:对象#没有方法'每个'“ 所以我想我真正的问题是,代码究竟有什么问题? 我尝试使用forEach而不是每个,但仍然有另一个错误“迭代器(x,函数(错误){TypeError:undefined不是一个函数”)。 有人请帮忙! var abc = function ( url, cb ) { for (var a = 0; a < url.length; a++){ var index = url[a].lastIndexOf("/") + 1; var filename = url[a].substr(index); var newFileLoc = "./tmp/" + filename; http.get(url[a], newFileLoc, function (error, result) { if (error) { console.error(error); } […]

节点Js,续集和玉。 如何从他们之间获得数据 – 许多关联?

我正在做一个NodeJS + Sequelize + jadenetworking应用程序。 我有一个名为box的表格,另一个名为user。 用户与框具有一对多的关系。 我喜欢做的是列出并显示在玉模板中的所有箱子的细节,包括拥有它的用户。 首先,我使用sequelize工具创build了表格 module.exports = function(sequelize, DataTypes) { var User = sequelize.define('User', { name: { type: DataTypes.STRING, allowNull: false }, email: { type: DataTypes.STRING, allowNull: false, unique: true }, password: { type: DataTypes.STRING, allowNull: false }, dateOfBirth: DataTypes.DATE, role: { type: DataTypes.ENUM, values: ['ADMIN', 'USER'], defaultValue: 'USER' } },{ […]

如何识别循环已完成

我想尽量减less下面的代码。 在节点js中工作 var each = 0; var final = {}; // myLoop have some array values; myLoop.forEach(function(row) { //data retrive from db db.query('SELECT * FROM test where type=?',[row.type], function(err, result) { final[each] = result; each++; if (each == myLoop.length) { return final; } }); }); 上面的代码工作正常,但试图避免如果(每个== myLoop.length)条件。 有什么可用来确定循环完成? 有可能是这样的: myLoop.forEach(function(row) { //do needs }).done({ return […]

在Async瀑布中为每个具有Mysql连接池的函数

我已经按照这个教程 ,现在我正在build立一个连接到一个Mysql数据库与一个工作连接池的Express js应用程序; 然后我使用Async.js在我的服务器中的瀑布指令。 我只是重构我的代码避免callback地狱。 我很困惑,因为我有一个嵌套的forEach函数(callback地狱的情况),它完全获得我的MySql连接的工作代码,现在没有任何工作。 问题:收到GET请求后,直到“Action Two”打印。 这是我目前的MWE : apiRoutes.get('/endpoint', function(req, res) { async.waterfall([ function actionOne(callback){ connection.acquire(function(err, con){ con.query( myQuery , function(err, result){ con.release(); if(err){ console.log(err); callback(err); } else { console.log("Action One Success"); callback(null, result); } }); }); }, function actionTwo(list, callback){ console.log("Action Two"); var arr = []; list.forEach(function(item, index, array){ item.arr = []; […]

如果我们正在循环访问当前项目,哪个更适合/ forEach?

每个人都在说什么for更高性能,然后forEach例如 https://jsperf.com/for-vs-foreach/37 Javascript效率:“for”vs“forEach” 但是当访问循环中的当前元素时它是否成立。 如果不是,为什么不,如果是的话,下面的代码是什么呢,在不同的情况下会产生矛盾的结果: 逻辑: //—————————————- var arr = [], len = 1000000, nos = 100; for(var t = 0; t<len; t++) { arr.push({ a:'a',b:'b',t:Math.random() }); } //—————————————- //===========forEach start==================== var tp1 = new Date(); arr.forEach( (ik)=>{ let tmp = []; for(let x = 0;x<nos;x++){ tmp.push(ik.a); } }); var tp2 = new Date(); //===========forEach […]

Node.js-Ejs-Mongojs堆栈上的“没有方法”forEach“TypeError”

我在app.js上有这个代码,这是一个callback“locale”集合中的所有内容: tester = function(callback) { db.locale.find({}, function(err, locale) { callback( null, locale ) }); }; 当“index”(主页)被访问时,这将设置“标题”variables,并将“locale”集合内容事先传递给“内容”variables“string化”的variables(如果我不知道,我得到[object],[目的]): app.get('/', function(req, res) { tester(function(err, locale) { res.render('index', {title: "This is a test server", content: JSON.stringify(locale)}); }); }); 而这个forEach在“index.ejs”视图中应该只返回“title”集合字段,结果是: <ul> <% content.forEach( function( item ){ %> <li><%= item.title %></li> <% }); %> </ul> 无论如何,问题是我得到一个“'TypeError'没有方法'forEach'”当我浏览页面..什么可能导致这种行为? 谢谢!

Javascript forEach中删除元素

我试图做一个函数,可以从一个forEach循环中删除一个元素。 function: loopAndEdit = function(array,callback) { var helper = { data:{}, get:function() { return helper.data; }, remove:function() { index = array.indexOf(helper.data); array.splice(index,1); return true; } }; tempArray = array; tempArray.forEach(function(row) { helper.data = row; callback(helper) }); } 为了testing它,我遍历一个数组并尝试删除所有元素: names = ['abe','bob','chris']; loopAndEdit(names,function(helper){ console.log('Working on ' + helper.data); helper.remove(); }); console.log(names); 输出是: Working on abe Working […]