Tag: foreach

下面的代码等待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) […]

httpUploadProgress的缓冲区数据没有按预期工作?

我是新的节点js /快递。我正在尝试使用cloudfront和s3桶来制作多个图像上传应用程序。我想为用户显示进度条,我正在使用套接字io。照片上传进度将在loop.but问题是,当照片上传开始时,总是显示100%完成不从一开始。不认为上传完成它不是,我的文件是20MB。我不知道什么事情我想念什么东西 这是我的代码 app.post('/posttodb',(req,res) => { let isLoggedIn = req.cookies['check']; let token = req.cookies['peace']; const bucketName = 'awsBucketName'; console.log(isLoggedIn); if(isLoggedIn == "true"){ if(token){ jwt.verify(token,JWTPASS,(err,decode) => { if(err){ console.log(err) res.json({error:true}) }else{ console.log('========================>',decode) let postOwneranme = decode.user.username; let postTags = req.body.data.postTags; let photosBlob = req.body.data.photos; let postId = req.body.data.postId; let nepostAwsPhots = []; let OwnerPic = decode.user.propic; […]

每个关联arrays的Lodash

在关联数组中有一个forEach循环在Lodash中吗? 我发现, 称为 “forEach”的函数仅适用于索引数组。 例如,如果我有一个数组myArray与值[1, 2, 3] ,并做 lodash.forEach(myArray, function(index) { console.log(index); }); 并运行该function(在Node ),我得到了预期的结果: 1 2 3 但是,当我尝试与关联数组,这是行不通的: lodash = require('lodash'); myArray = []; myArray['valOne'] = 1; myArray['valTwo'] = 2; myArray['valThree'] = 3; lodash.forEach(myArray, function(index) { console.log('7'); }); 正如你可以在Node看到的那样,即使它包含了除数组元素以外的东西,callback函数也不会被触发。 它似乎完全跳过循环。 首先,为什么会这样呢? 其次, Lodash是否还有另外一个函数来处理这个问题,或者,如果没有的话,有没有办法使用forEach函数来完成这个任务,而不需要改变stream程中的原始数组呢?

Node.js中的jQuery.each()?

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

Jade模板引擎 – 每个迭代偏移量

有没有办法在使用Jade模板引擎时抵消“每个”迭代? 例如,在传入名为list的对象时: ul each item in list li #{item} 会输出 <ul> <li> Item 1 </li> <li> item 2 </li> <li> item 3….. … </ul> 但是我希望第一个项目的显示方式与其余项目不同,例如: <ul> <li> Item 1: First Item in list! </li> <li> item 2 </li> <li> item 3….. … </ul> 那么有没有人知道一种方法来抵消在Jade中的'each'语句,以便我可以分别渲染第一个项目,然后渲染每个从第二个索引开始的项目?