Articles of async.js

在节点js中的async.forEach中返回值?

我开始学习node.js,并聚合多个RSS饲料在一个单一的饲料,然后重新从我怀疑的数据重新创build一个独特的饲料。 所以,为了处理多个http请求asynchronous我使用https://github.com/caolan/async#forEach这个工作。 但我不知道如何返回一个值(rss xml饲料在我的情况)。 这是我的代码: function aggregate(topic) { async.forEach(topic.feeds, function(item, callback) { parseAndProcessFeed(item, callback); }, function(err) { // sort items by date items.sort(function(a, b) { return (Date.parse(b.date) – Date.parse(a.name)); }); var rssFeed = createAggregatedFeed(); console.log(rssFeed); return rssFeed; } ); } 与console.log(rssFeed)我可以看到RSS饲料,所以我觉得我失去了一些明显的东西。 我怎样才能返回rssFeed值? 有些帮助让我回到座位上会很好,谢谢! 泽维尔

NodeJS,asynchronousforEachSeries执行顺序

试图让我的头在使用NodeJS的asynchronous模块。 我有以下代码。 var a1 = [1,2,3,4,5,6,7,8]; async.forEachSeries(a1, function(n1, callback) { console.log(n1); var a2 = [10,11,12,13,14]; async.forEachSeries(a2, function(n2, callback) { console.log(n1 + " " + n2); callback(); }); callback(); }); 我想以打印输出的方式来完成上述代码的处理 1 1 10 1 11 1 12 1 13 1 14 2 2 10 2 11 2 12 2 13 2 14 3 3 10 […]

Async函数嵌套在async.js瀑布中

免责声明:非工程师,JS很新 嘿所有 – 我试图利用async.js模块链接一组函数在一起。 我希望的输出是迭代mapData (对象数组),然后传递给最终的函数(现在 – 只是console.log(result))。 async.waterfall([ function( callback ) { getCoords ( function( data ) { mapData = data; }); callback(null, mapData); }, function( mapData, callback ) { //getEmail ( mapData ); callback( null, mapData ); } ], function( err, result ) { console.log( result ); }); 但是, getCoords包含另一个asynchronous函数(在这里find)。 我所看到的是第一个callback(null,mapData)发生在它返回之前,导致一个空结果。 我如何构造这个以便mapData在返回到下一个块之前返回mapData ? […]

Q.js:如何重写Q.js中的asynchronous系列stream?

为了掌握Q.js ,我想在Q.js使用async.series来转换下面的代码。 基本上我创build一个文件夹,如果它不存在(使用mkdirp),将文件移动到备份文件夹,并将文件保存到主文件夹。 var async = require('async'); var fs = require('fs'); var path = require('path'); var sessiondId = new Date().getTime() % 2 == 0 ? new Date().getTime().toString() : '_1234'; var backupFolder = path.join(__dirname,sessiondId); var backupFullPath = path.join(backupFolder,'a.txt'); var fullPath = path.join(__dirname,'main','a.txt'); var mkdirp = require('mkdirp'); async.series({ createOrSkip: function(callback) { mkdirp(backupFolder, function (err, dir) { if(err) […]

Async.js – ETIMEDOUT和callback已经被调用

当我运行index.js时,我不断收到ETIMEDOUT或ECONNRESET错误,后面跟着一个Callback was already called错误。 起初我以为是因为在调用onEachLimitItemcallbackonEachLimitItem之前我没有包含return 。 所以我将其包含在asynchronous多个callback文档中 。 仍然没有解决它。 我也尝试删除错误事件,并在错误事件中删除onEachLimit的callback,但都没有工作。 我已经看过围绕Callback already called的Callback already called问题的其他SO问题,但是由于他们不关心stream,我没有find解决scheme。 我的理解是,如果stream遇到像ECONNRESET这样的错误,它将返回错误事件中的callback,并继续到下一个stream,但似乎并不是这样。 几乎看起来,如果错误自行解决,即它重新连接,并尝试再次发送到Azure错误的蒸汽,它的工作,然后触发“完成”事件,我们得到了Callback already called的Callback already called 。 我是否正确处理stream事件中的callback? var Q = require('q'); var async = require('async'); var webshot = require('webshot'); var Readable = require('stream').Readable; var azure = require('azure-storage'); var blob = azure.createBlobService('123', '112244'); var container = 'awesome'; var countries = […]

当使用node.js async forEachSeries时,是否有等价的语句来“继续”?

我正在使用node.jsasynchronous包,特别是forEachSeries,根据从数组中绘制的参数进行一系列http请求。 在每个请求的callback中,我有一些if / else语句来响应不同types的响应。 // This is the callback of a GET request inside of a forEachSeries function(error, response) { if (response.results) { // Do something with results } else if (!response.results) { // Would like to use a continue statement here, but // this is not inside of a loop } else { // […]

使用async.js进行asynchronous树遍历

我试图使用async.js遍历一个嵌套的项目树。 遍历一个分支后,遍历终止。 var count=0; exports.buildFamily = function(item_id, mback){ var extendedFamily={}; exports.getItembyId(item_id, function(err, item){ extendedFamily=item; if(item.descendants){ extendedFamily.kids=[]; count=+item.descendants.length; console.log('outercount ' + count); async.eachSeries(item.descendants, function(item){ count– console.log('item: ' + item) exports.buildFamily(item, function(err, family){ console.log('deepcount: ' + count); extendedFamily.kids.push(family); if(count===0){ return mback(null, extendedFamily);} else {extendedFamily.kids.push(family);} }) }) } else{ if(count===0){ return mback(null, extendedFamily);} else{ extendedFamily.kids.push(family); return; } } […]

async.map或async.each与async.parallel有什么不同?

我最近开始研究一个节点项目,并且一直在使用async库。 我有点困惑,哪个选项会更快。 对某些数据使用async.map并获取其结果或使用async.each遍历一个用户数组,并将其相应的操作放入一个我使用async.parallel执行的函数调用数组中。

Node + Sequelize:如何在添加之前检查项目是否存在? (asynchronous混淆)

不幸的是,对于节点的asynchronous/同步执行,我对节点很陌生。 我正在使用节点,与sqlite和async.js sequelize。 我有一系列的Articles ,每个Articles都有一些Authors 。 对于每篇Article每位Authors ,我想检查Author存在。 如果没有,创build它。 问题是,在最初运行时,重复作者正在创build,我认为由于asynchronousfunction导致检查存在的问题。 例如,用数组: authors = ['A. Test', 'B. Test', 'C. Test', 'A. Test'] authors = ['A. Test', 'B. Test', 'C. Test', 'A. Test'] 和代码: async.each(authors, function(item, callback){ Author.sync().then(function(){ Author.count({ where: {name: item.trim()} }).then(function(count){ if (count != 0) { console.log('Author already exists') } else { console.log('Creating author…') Author.create({ […]

使用nodejsasynchronous和请求模块

我试图使用asynchronous和请求模块在一起,但我不明白如何通过callback。 我的代码是 var fetch = function(file, cb) { return request(file, cb); }; async.map(['file1', 'file2', 'file3'], fetch, function(err, resp, body) { // is this function passed as an argument to _fetch_ // or is it excecuted as a callback at the end of all the request? // if so how do i pass a callback to […]