Tag: async.js

如何在async.js迭代器(节点)中添加延迟

我正在编写一个爬虫在Node,并发现了奇妙的async.js库。 我不想淹没我爬行的服务器。 所以我想在迭代之间引入一个延迟。 做这个的最好方式是什么? 我可以从setTimeout中的迭代器调用callback()吗?

Async.jsdevise模式

我正在为我的node.js应用程序使用async.js。 我需要帮助解决以下问题。 假设我有一个以下的aysnc js系列函数。 async.waterfall([ function getDataFromDB(request, response, callback){ … }, function someOperationOnDBData(dbData, response, callback){ … }, function renderSomeFlow(evaluatedData, response, callback){ … } ]); 我有三个函数按上面提到的顺序调用。 我从getDataFromDB获取数据并传递给someOperationOnDBData等。 假设我需要getDataFromDB和someOperationOnDBData之间的一个更多的操作,但仍然向前传递DBData。 例如: async.waterfall([ function getDataFromDB(request, response, callback){ … }, function extraOperation(dbData, response, callback) {…} function someOperationOnDBData(dbData, extraOperationData, response, callback){ … }, function renderSomeFlow(evaluatedData, response, callback){ … } ]); 这里在中间添加一个单独的步骤会改变函数的定义,而且我需要在dbData中传递extraOperation来将它转发给someOperationOnDBData […]

async.whilst中的callback和错误是什么?

我试图使用async.whilst重新生成0和数组长度之间的随机数,直到此索引上的元素的长度大于指定的长度。 我想使用async.whis为此,但语法不完全清楚给我。 我想到做以下事情: var selectParagraph = function(paragraphs, callback){ var index = Math.floor(Math.random() * paragraphs.length async.whilst( function(){ return paragraphs[index].length < minParagraphLength; }, function(cb) { index = Math.floor(Math.random() * paragraphs.length); }, function(err) { console.log(paragraphs[index]); callback(err, paragraphs[index]); } } 但是,这是行不通的。 我想这是因为我没有在任何地方使用cb作为第二个函数,但是我不完全知道应该如何使用它。 更改索引后,我只是调用cb()吗? variableserr究竟包含什么?

JS:async.each的等价承诺是什么?

似乎今天宣布,承诺将在ES6。 我从来没有成为一个承诺的家伙,.then()的史诗链似乎比async.waterfall()中的一个简单的函数列表更复杂,但是看起来像我将不得不去学习它们。 那么,其他非常stream行的工作streamasync.each()是什么呢? async.each(items, processItem, function(err){ doSomething(err) }); 例如,在每个项目上运行processItem函数,一旦完成,继续执行doSomething(如果任何processItem()被搞砸,则执行一些不同的操作)。 我如何在承诺中做到这一点? 是否有一个官方的承诺用户文档的地方(不是诺言规范 ,实际示例工作stream程,以及如何做承诺)像asynchronous呢?

一旦读取完所有文件,使用asynchronous模块触发callback

我正在使用caolan的“asynchronous”模块来打开一个文件名数组(在本例中是模板文件名)。 根据文档,我使用async.forEach() ,所以我可以在所有操作完成后触发一个callback。 一个简单的testing案例是: var async = require('async') var fs = require('fs') file_names = ['one','two','three'] // all these files actually exist async.forEach(file_names, function(file_name) { console.log(file_name) fs.readFile(file_name, function(error, data) { if ( error) { console.log('oh no file missing') return error } else { console.log('woo '+file_name+' found') } }) }, function(error) { if ( error) { console.log('oh […]

嵌套节点async.eachSeries

与asynchronous模块一起打了半天,但嵌套几个级别时无法正常工作。 由于代码有点冗长的职位,但请裸露在我身边,所有的代码应该运行良好。 所以这工作正常: var async = require('async') var myarr = [“Outer – A”,“Outer – B”]; var myarr2 = [“Inner – A”,“Inner – B”]; var innerComplete = true; async.eachSeries(myarr,function(item,outerCallback){ console.log('处理项目'+项目); async.series([ 函数(callback){ takeTime(2000,item,callback) }, 函数(callback){ takeTime(1000,item,callback) }, 函数(callback){ outerCallback(); } ],函数(err){ console.log(“— OUTER SEQUENCE —”) }) },函数(err){ console.log(“— OUTER LOOP —”) }); 函数takeTime(ms,msg,callback){ console.log(“启动”ms + ms […]

是否有可能build立一个dynamic的任务列表nodejsasynchronous(瀑布,系列等…)

我正在从包含节点和边缘数据的mongo中收集一些信息。 首先我必须得到节点,这样我可以抓住它的边缘。 一旦我有一个边缘列表,然后回去,并抓住更多的节点(等..基于深度值)。 下面的代码是我如何尝试使用async.waterfall和任务列表的一个松散的例子。 最初我只有一个单一的任务,但是一旦我把我的第一个查询添加到任务数组。 不幸的是,这似乎并没有注册asynchronous,它不会继续处理我添加的任务。 有一个更好的方法吗? var async = require('async') var mongoose = require('mongoose') var _ = requrie('underscore') var Client = this.Mongo.connect(/*path to mongo*/) var Node = mongoose.Schema({ id : String, graph_id : String }) var Edge = mongoose.Schema({ id : String, source_id : String, destination_id : String }) var Nodes = Client.model('myNode', Node) […]

如何使用async.js中的Promise进行编码?

背景 我通常会根据async.js编写node.js脚本来控制工作stream程。 有时我发现,基于async.js,代码似乎仍然是一个“地狱”。 如果使用多个嵌套,代码不可读,维护也非常棘手。 我在这里做了一些search,find了一些有用的资源 – 但其中大多数是一般的概念。 所以我会问一个问题。 对于任何反馈,我们都表示感谢。 我的通用代码 var request = require('request'); var async = require('async'); var array = [1, 2, 3, 4 ,5 ,6]; var url = 'http://www.google.com'; async.mapLimit(array, 3, function(number, callback) { request(url + number, function(error, res, body){ //do sth callback(); }); }, function(err){//do nothing}); 题 所以这次我想用Promisereplace这种代码。 能否请你帮忙? 如果问题重复,请提供一些有用的资源url。 谢谢!

在节点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 […]