Articles of foreach

在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 […]

下面的代码等待forEach完成

我有一个包含各种数据的大型数组,以及一个对数组执行一些基本的但是耗时的分析的函数。 我使用forEach循环遍历数组。 如果条件满足,我希望函数返回一个特定的元素,否则使用Promises,因为函数可能需要大量的时间来完成: var analyzeData = function (arr) { return new Promise(function (resolve, reject) { var answer = false; arr.forEach(function (elm) { if (elm.foo == true) { answer = elm; } }); resolve(answer); }); } 我遇到的问题是,我怀疑在forEach循环完成之前, answer正在解决; 即在forEach循环可以完成检查每个元素的foo属性之前,函数parsing为answer ,默认为false。 有没有办法确保forEach循环之后的代码等待循环完成迭代,或者以其他方式循环访问数组?

节点的模块asynchronous不能按预期工作

我试图使用节点的模块“asynchronous”,其方法“每个”,以便使用array.forEach的asynchronous版本。 问题是它没有按预期工作,因为它从来没有执行callback,我把它作为第三个parameter passing。 代码如下: var async = require('async'); var arr = [1,2,3,4,5,6,7,8,9,10]; async.each(arr, function(element, cb){ console.log(element); }, function(err){ console.log("Done"); }); 事实上,我的程序从不打印“完成”,即使它完成循环数组。 你有什么主意吗?

在forEach之后发送响应

(请注意,这不是两个类似标题的问题的重复,这两个问题使用mongoose,而答案仅适用于Mongoose查询) 我有一个目录列表,每个目录都包含一个文件。 我想返回一个JSON列表与每个这些文件的内容。 我可以加载文件没有问题,但因为我循环与forEach数组,我的空响应发送之前,我已经实际加载的文件的内容: function getInputDirectories() { return fs.readdirSync(src_path).filter(function(file) { return fs.statSync(path.join(src_path, file)).isDirectory(); }); } router.get('/list', function(req, res, next) { var modules = []; var input_dirs = getInputDirectories(); input_dirs.forEach(function(dir) { path = __dirname+'/../../modules/input/'+dir+'/module.json' fs.readFile(path, 'utf8', function(err, data) { modules.push(data); }); }); res.status(200).json(modules); }); 我怎样才能确保我只发送modules数组一旦完全加载,即:一旦forEach完成。

如何在nodejs中使用foreach来执行Mongodb操作

这是我的代码从集合名称获取集合名称的集合名称。 我想用foreach循环迭代存储在doc中的数据。 var db = mongojs('login'); var cursor = db.collection(groupname).find(); console.log(cursor); cursor.each(function(err, doc) { console.log(doc._id); mongo.collection(doc._id + "group", function(err, collection) { collection.remove({"groupname": groupname}); }); }); 我试着做db.collectionname.find().forEach(….) ,但我有一个错误,说这样的function不存在。 请帮忙。

Node.js Api在Async循环中调用

我很难做出多个API调用,并得到正确的地方返回的结果。 这是我想要实现的:两个循环,嵌套。 外层循环遍历复杂的json对象,并将一些对象的值放入数组调用框中。 内部循环调用api,并将返回的结果放入一个名为bag的数组中。 所以我有箱子和袋子充满数据。 当循环和API呼叫都结束时,我想要访问箱子和包里的数据,然后用它做东西。 我只是不确定最好的方法去同时访问两个数组。 这是我到目前为止,但袋和框当然是空的,因为它们在所有循环和API调用结束之前被调用。 var data = {}//a json object with data; var bag = []; var box = []; async.forEach(data.item, function(item, callback){ async.forEach(item.name, function(name, callback){ callApi(item.name, function(obj){ bag.push(obj); }); callback(); } box.push(item); callback(); }); function callApi(name, callback){ asyncApiCall(url+name, function(err, result){ callback(result); }); } //when all loops and api requests are […]

同步forEach循环(等待它结束)

我在Node.js中有一个函数,它接受一个数组并循环,对每个元素进行一些耗时的计算。 这是一个超简化版本的function: var analyze_data = function (data) { data.forEach(function (elm) { if (elm.myProp == true) { return true; } }); return false; } 从本质上讲,如果任何元素的属性myProp等于true,我希望函数返回true。 如果没有元素满足这个条件,函数应该返回false。 但是,代码永远不会等待forEach循环完成。 换句话说,如果数组中的第100个元素满足条件,则函数应该返回true。 相反,它跳过return false; 并在forEach循环有时间完成之前返回false。 有针对这个的解决方法吗? 编辑 所以我意识到我简化了我的问题 – 我实际上使用了Node.js包es6-promise ,而我的代码看起来更像这样: var analyze_data = function (data) { return new Promise(function (resolve, reject) { data.forEach(function (elm) { if (elm.myProp == true) […]