Articles of async.js

当使用Node和jsdom到蜘蛛网站时,会导致内存不足

我试图从我已经存储在一个数组中的一堆HTML页面中拉出一个string。 我有以下代码: const jsdom = require('jsdom') desc('Import pages'); task('handleSpots', [], function (params) { allSpots.forEach(function(spotUrl){ handleSpot(spotUrl) }) }); function handleSpot (href) { jsdom.env( href, ["http://code.jquery.com/jquery.js"], function (err, window) { if (err) { console.log(host+href+" "+err) return } const data = {url: host+href} data['name'] = window.$("h1.wanna-item-title-title a").text() console.log(data['name']) window.close() } ); } allSpots数组中有大约600个URL。 当我运行这个我得到一堆错误: /the_hook/index.html Error: read ECONNRESET […]

如何使用callback来等待两个查询asynchronous节点

我正在使用节点中的sql查询asynchronous模块瀑布方法。 我将如何使用callback来发送两组数据到下一个函数。 就像第一个将qryUpdateCheck和qryCheckDbl传递给下一个的函数一样。 这将如何正确完成。 async.waterfall([ function (callback) { var requestUpdateCheck = new sql.Request([config]); requestUpdateCheck.query("Some qryUpdateCheck", function (err, qryUpdateCheck) { console.log('qryUpdateCheck', qryUpdateCheck); }); var requestCheckDbl = new sql.Request([config]); requestCheckDbl.query("Some qryRequestCheckDbl", function (err, recordset) { console.log('qryCheckDbl', qryCheckDbl); }); callback(null, qryUpdateCheck, qryCheckDbl); }, function (qryUpdateCheck, qryCheckDbl, callback) { console.log('hi from second from qryUpdateCheck', qryUpdateCheck); console.log('hi from second from […]

编写async.parallel的testing。

我是javascript的新手。我正在尝试使用proxyquire编写基本的unit testing。 下面的代码。 文件 – 答: const modA=require('./modA'); const modB=require('./modB'); const async=require('async'); module.exports=function(a,b,callback){ async.parallel([ function(callback){ // db call modA(a,b,callback); }, function(callback){ // db call mobB(a,b,callback); } ], //not able to test code (err,res){ //do something }); }; 文件A的unit testing如下所示: const proxyquire=require('proxyquire'); function modaAStub(a, b, callback) { return (null, modAresponse); } function modaBStub(a, b, callback) { […]

Nodejs / Async:如何在代码片段中提到的async.map的iteratee函数中如何工作?

作为nodejs和async的新手,以下是我遇到的代码。 app = express(); /* other express use calls like – app.use(bodyParser.json()); */ var async = require("async"); var server; app.post('/callType/call', function(req, res) { var startTime = Date.now(); server = req.body.server; //async.map asynchronuously call enrollStep1 for every element in the req.body.nodes array //HOW DOES THIS WORK??!! – WHERE IS THE CALLBACK DEFINED OR SOURCED FROM??? //****************************************************** […]

使用asynchronous在Node.js中批量处理并行HTTP请求

我的代码大致如下: readLine.on('line', function (line) { async.parallel([ function (callback) { // HTTP request #1 sent with accompanied JSON, get JSON as result }, function (callback) { // HTTP request #2 sent with accompanied JSON, get JSON as result }], function (error, results) { // write to local file }) 我用line-by-line模块实现了inputstream。 我的问题是,一旦我的代码已经开始运行了30秒左右,我得到了ECONNREFUSED和ECONNRESET错误,我认为这是因为我所有的TCP连接都被重载(所有的HTTP请求都转到本地主机服务器)。 这绝对没有帮助,我必须阅读的文本文件约20万行。 有没有办法分批处理线路和HTTP请求,并等待所有的请求都已经通过,并已成功返回,所以我不超载我的TCP套接字? 在此先感谢您的帮助和build议。

Async.eachSeries:已经调用callback

这是一个有点长和杂乱的代码,但请忍受我,因为我需要完成这个。 我正在尝试为每个用户更新一个json对象。 我想循环迭代等待asynchronous过程结束,以避免竞争条件。 然而,这导致了一个callback地狱,现在我不能决定什么是正确的地方为每个callback被返回。 我在嵌套async.eachSeries上提到了这个答案,并试图根据它来构造我的代码。 但是,这仍然行不通。 该代码在callback1()提供了已经调用的错误。 async.eachOfSeries(res, function (value, camp, callback3) { let _id = res[camp]._id; let arr = res[camp].campaignID; async.eachOfSeries(arr, function2, function (err) { callback3(); }) function function2(value1, i, callback2) { let users = arr[i].users; let id = arr[i].id; let loop = Math.ceil(users / 1000); let limit = 0, offset = 0; for […]

如何用Nodejs实现对MongoDB数据库的并行插入操作

我正在开发一个大量的项目导入到数据库的代码段。 在Excel文件中的总logging是24103.而由于大规模的validation,最初的40分钟总共需要input700行logging。 现在,在减less战略步骤之后,所有logging的时间减less到24分钟。 现在有四项活动可以并行独立执行。 那些我尝试通过async.parallel过程并行执行的活动。 但是当我看到控制台进行debugging的时候,我才知道它仍然能够以一种方式在一条logging中执行这些操作。 只是不同之处在于正在插入的logging的洗牌。 在所有的执行完成之后,与之前所执行的活动顺序进行的时间相同。 什么可能是另一种可能的方式来执行(插入)并行的方式。 我的步骤包括 flowController.on('START', function () { // Uploading and storing the binary data as excel file }); flowController.on('1', function () { // Validation to check if file contain required sheet with name and all and convert the file into JSON format }); flowController.on('2', function () { // […]

在nodejs中使用asynchronous库

你好,这里是我的代码: function get_group(req, res, next) { var send_result = function(err, group_list) { […] res.send(group_list); return next(); }; Group.findOne({'_id': req.params._id}, send_result); } 现在我怎样才能使用async.series实现asynchronous库(caolan),并将findOne()与send_result结合起来,因为它看起来相当混乱。 编辑1 : 我用这个策略,但是我不确定是否正确,有什么build议? function get_group(req, res, next) { async.waterfall([ function(callback) { Group.findOne({'_id': req.params._id}, callback); } ], function (err, group_list){ res.send(group_list); return next(); }); } 任何build议?

我可以在async.js forEach中扩展迭代器的function吗?

我正在使用async.js在集合上运行for循环。 出于性能方面的原因,我想将一个数据库连接传递给迭代器方法,这样每次迭代器运行时都不会打开/closures数据库连接。 我正在为我的数据模型使用mongoose.js。 下面的代码获取所有的艺术家mongo,然后为每个添加一首歌曲。 我的问题是,我怎样才能使用addArtistSong updateAllArtists相同的数据库连接? function updateAllArtists() { var db = mongoose.createConnection('localhost/dbname'); var Artist = db.model('Artist', artistSchema); Artist.find({}, function(err, artists) { // for each artist, add a song async.forEach(artists, addArtistSong, function(err) { }); } function addArtistSong(artist, cb) { // THIS IS WHERE I NEED A DB CONNECTION var Song = db.model('Song', songSchema); } 我能否以某种方式扩展迭代器签名,如addArtistSong(artist,db,cb)? […]

用PhantomJS桥接序列化function

我有一个链接数组使用链接参数的function,由PhantomJS刮取数据。 如何实现这个function? 这对于 statemant一次运行paralely 3函数,我recive 事件错误 。 在这种情况下,它适合使用asynchronous ,但它如何使用系列? 运行函数的时间总是不一样,但是asynchronous应该如何理解,完成并从新的URL开始? var phantom = require('phantom') , async = require('async'); var urls = [ 'http://en.wikipedia.org/wiki/Main_Page', 'http://es.wikipedia.org/wiki/Wikipedia:Portada', 'http://de.wikipedia.org/wiki/Wikipedia:Hauptseite' ]; async.mapSeries(urls, getTitle, function(err, result){ console.log(result); }) function getTitle (link, callback) { phantom.create(function(ph) { return ph.createPage(function(page) { return page.open(link, function(status) { return page.evaluate((function() { return document.title; }), function(result) { callback(null, […]