Articles of async.js

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

asynchronousnode.js数据stream混淆

感谢您的帮助…如何正确处理这个问题,挣扎大时间。 我现在在asynchronous,已经放弃了我的能力,妥善编写callback。 我有一个片段,在这里我传递一组随机数(eachrecord),并将它们传递给一个mongoose调用。 试图从我通过的多个查询中创build一个数据集。 我的问题是,不pipe我做了4个小时,“newarray”variables总是空的。 感谢您的帮助 – async.forEach(arLimit, function(eachrecord, callback){ newarray = new Array; var query = UGC_DB_Model.find({}).skip(eachrecord).limit(-1); query.execFind(function (err, data) { if (err) console.log(err); else { newarray.push(data); } }); callback(null, newarray); }, function(err, result) { if (err) return next(err); console.log("(it's empty): " + result); });

如何在node.js中asynchronous执行多个REST API请求?

我想要做的是做多个远程REST API请求,我希望每个请求都依次完成。 我读过,async.js是这样做的方式。 因为我不知道有多less次我要做这个请求,所以我使用了async.whilst() 。 这个想法是,我将停止请求,一旦API返回零职位。 这是我的代码到目前为止(为了testing的目的,我限制了循环运行5次)。 var request = require('request'); var async = require('async'); var APIKEY = 'api-key-here'; var i = 0; var continueWhilst = true; async.whilst( function test() { return continueWhilst; }, doThisEveryTime, function (err) { // Done } ); function doThisEveryTime(next) { reqURL = 'http://api.tumblr.com/v2/blog/testsite.com/posts/text?api_key=' + APIKEY + '&offset=' + i*20; request( […]

asynchronous与节点的JS

这个函数使用async.js库的进展是什么? var async = require('async'); var square = function (num, doneCallback) { console.log(num * num); // Nothing went wrong, so callback with a null error. return doneCallback(null); }; // Square each number in the array [1, 2, 3, 4] async.each([1, 2, 3, 4], square, function (err) { // Square has been called on each of […]

为什么瀑布和series / parallelLimit(1)之间的async.js不一致?

下面的代码工作正常: var fs = require('fs'); var async = require('async'); var addErrParm = function (err, done) {return function(exists) { done(err, exists); }} function testAsync() {var response = ''; function checkIfTheFileExists(done) { fs.exists('file.txt', addErrParm(null, done)); } function readTheFile(exists, done) { if (!exists) { done('notFound'); } else { fs.readFile('file.txt', 'utf8', done); } } function showTheFile(err) { if (err) […]

我可以指定如何处理asynchronousJavaScript库中的错误?

我正在尝试清理asynchronous函数的input。 具体来说,给定一个API的凭证列表,我试图通过向API发送一个testing请求并检查每一个的结果来筛选哪些是无效的。 我面临的问题是这样的:我想收集无效的关键到一个单一的列表。 我通常会使用async库来使用series函数按顺序执行请求。 但是,从文档: 如果系列中的任何函数将错误传递给其callback函数,则不会运行更多函数,并立即使用错误值调用callback函数。 这不是所需的行为:我想收集错误代替响应(或两者)。 这是可能的,使用这个库,而不改变我与API交互的方式?