Articles of async.js

从多级JSON(使用async.js)recursion创build目录

定义 File#createDirectoriesFromJSON (json, cb); json:JSON对象。 cb:function。 参数:error(Error),created(布尔值,如果至less有一个目录已经创build,则为true)。 假设File类包含一个名为_path的属性,其中包含一个目录的path。 用法 var json = { b: { c: { d: {}, e: {} }, f: {} }, g: { h: {} } }; //this._path = "." new File (".").createDirectoriesFromJSON (json, function (error, created){ console.log (created); //Prints: true //callback binded to the File instance (to "this"). Hint: cb […]

奇怪的mongoose行为 – 文件不会保存到数据库中

在下面的代码中,我尝试用一​​些testing数据填充我的开发数据库。 我想先删除所有文件,然后添加新的testing文件: var mongoose = require('mongoose') , Plan = mongoose.model('Plan') , Async = require('async') Async.series([ function(callback){ // delete all records Plan.find(function(err,docs){ for (d in docs) Plan.remove(d, function(err) { if (err) console.log("error removing records " + err) }); }); callback(); }, function(callback){ var planArray = [ {title: 'Plan A', body: 'Restaurant Financial Plan'}, {title: 'Plan B', […]

如何在Model.find Sailsjs中循环

祝你有个好日子,有人可以build议我使用哪种asynchronous函数吗?在我的情况下,我需要输出每个组的第一个成员。 ***注意这只是我的程序stream程的一个例子。 /* Grouplist groupmember Id | name id | name | group 1 | group1 1 | John | 1 2 | group2 2 | James | 1 3 | group3 3 | Paul | 3 4 | Angel | 2 5 | Anne | 2 6 | Jane | 3 looking for output […]

从一个ID数组到一个名称数组(mongo,nodejs)

我一直在这个几个小时左右…感谢您的任何帮助。 我有一个“用户”集合,每个用户有一个_id和一些名字( Username名, FirstName , LastName )。 我也有一个“组”集合,每个组都有Members ,这是一组用户的_id 。 起初,我想要一个简单的函数,接收一个ID数组,并把它变成一个很好的格式的string数组: FirstName + " " + LastName + " (" + Username + ")" 。 所以我为此做了一个简单的说明: var ans = []; for (i=0; i<arrOfIds.length; i++) { users.find({"_id": ObjectID(arrOfIds[i])}, function(err, result){ ans.push = result.FirstName + result.LastName + "(" + result.Username + ")"; }); } 但是因为mongo是asynchronous的,所以不起作用。 经过一番阅读,我安装了asynchronous ,我认为将解决我的问题。 […]

如何按照数组内容的顺序执行async.map函数

我有下面的代码例程,很好用。 唯一的问题是,我需要的结果回来的links数组相同的顺序。 例如,我需要首先返回google.com链接的结果,然后是雅虎等。代码当前以“随机”顺序返回。 var Nightmare = require('nightmare'); var async = require('async'); var links = [ "http://www.google.com", "http://www.yahoo.com", "http://www.bing.com", "http://www.aol.com", "http://duckduckgo.com", "http://www.ask.com" ]; var scrape = function(url, callback) { var nightmare = new Nightmare(); nightmare.goto(url); nightmare.wait('body'); nightmare.evaluate(function () { return document.querySelector('body').innerText; }) .then(function (result) { console.log(url, result); }) nightmare.end(function() { callback(); }); } async.map(links, scrape); 更新:谢谢@christophetd。 […]

使用Hapi&Async的API – 如何清空数组/在“回复”或每个新的“get”之后立即执行?

我正在构build一个小API,用于获取数据并对其执行任务(使用asynchronous),使用push将这些数据的一部分存储在数组中,然后用Hapi的reply()将其显示给客户端。 我正在寻找清空我的数组(例如使用arrayname.length = 0)服务器已发送答案的客户端。 目前的代码遵循这个逻辑: let data = [] server.route({ method: 'GET', path: '/api/{data}', handler: function (request, reply) { async.parallel([ function(callback) { // fetch some data, work with it and then add it to our array using push data.push ({ // example data bla:'blabla', number:'10' }); callback(); }, function(callback) { // another time (…) data.push […]

Promises + async.js

我总是阅读使用承诺与async.js不是一个好主意。 我想明白为什么。 我正在使用async.eachLimit来控制文件中asynchronous操作的限制,并承诺在完成所有asynchronous操作后返回结果。 例: const maxOfAsync = process.env.maxOfAsync || 500; return new Promise((resolve, reject) => { async.eachLimit(arrayOfFiles, maxOfAsync, (file, callback) => { callExternalLib(file).then((data) => { file.data = data; callback(); }).catch((error) => { callback(error); }); }, (error) { if (error) return reject(error); resolve(arrayOfFiles); }); }); 如果我不应该一起使用,如何达到相同的结果? 让我们忘记asynchronous/等待一分钟,然后返回只有Promises和async.js存在的日子。 我能做什么? 谢谢。

NodeJs:使用请求url的asynchronous – Post方法发送响应之前执行的所有url

我有一个post方法,其请求input是一个newLink对象列表(具有属性linkUrl和状态的newLink)我使用async.map迭代我的URL检查链接是否是活动的。 newLinks包含像{www.google.com,www.nourl.com,www.xyz.com}这样的链接,我希望毕竟这个请求被处理,并设置相应的状态为true或false,我希望这个使用res来发送。发送(newLinks) 但控制台给出了以下结果:“www.google.com已经启动”,然后调用res.send(),然后执行“www.nourl.com is up”和“www.xyz.com is up” 所以基本上,在第一个url请求之后,我的代码在asynchronous循环之外执行函数。 我认为asynchronous将只允许所有的urlvalidation后才能执行下一段代码。 app.post('/myposturl', function(req , res){ var request = require('request'); let linkDetails= req.body.linkDetails; var i = 0; async.map(linkDetails, function(newLink, callback) { var Url = "url"; var url = newLink.linkUrl; var proxiedRequest = request.defaults({'proxy': Url}); proxiedRequest(url , function (error, response, body) { if(error){ console.log('Err: '+ error); } if (!error) […]

async.js并行工作不正常

我有以下代码: async.parallel({ one: function(callback) { gps_helper.get_gps(PEMSID, conn, start, stop, function(fullResults){ callback(fullResults); }) }, //query for new dataSet two: function(callback) { admin.getTh(function(gpsThresholds){ callback(gpsThresholds); }) } }, function(results){ console.log(results); console.log('emitting GPS…'); socket.emit('GPS', {gpsResults: results.one, thresholds: results.two, PEMSID: PEMSID, count: count, length: PEMSToDisplay.length, checked: checked}); count++; }); 这是行不通的,我的控制台显示第一个查询在callback中结束。 在输出中也没有{one: fullResults, two: gpsThresholds}格式,它只是显示各个函数的callback值。

nodejsasynchronous:多个相关的HTTP API调用

我正在开发一个项目,其中包括向不同的API发出多个HTTP GET请求,每个请求都需要最后的信息。 我试图避免嵌套callaback和反地狱,并试图让它与async模块的工作。 这是我需要做的:我有一个1..n课程标识符( ['2014/summer/iat/100/d100', '2014/spring/bisc/372/d100'] )。 对于数组中的每门课程,我需要通过HTTP GET获取其课程大纲。 产生的大纲看起来像这样: { "info": { "nodePath": "2014/spring/bisc/372/d100", "number": "372", "section": "D100", "title": "Special Topics in Biology", "term": "Spring 2014", "description": "Selected topics in areas not currently offered…", "name": "BISC 372 D100", "dept": "BISC", }, "instructor": [ { "lastName": "Smith", "commonName": "Frank", "phone": "1 555 555-1234", "email": "franksmith@school.edu", […]