Tag: async.js

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

node.js async.js nextTick vs setImmediate

我有一个大量使用async.js模块的大型node.js应用程序。 我有很多这样的代码: async.series([ function(callback){ sql.update(query, callback); }, function(callback){ if (something){ sql.update(query2, callback); } else{ callback(null); } } ]); 最大的问题是else语句中的同步callback。 我读了一段时间,你不应该这样做与async.js,因为它可能会导致意想不到的结果,但我不知道什么是最好的select。 我读过,我应该在一些地方使用process.nextTick,但现在我正在阅读,我们不应该使用它,它应该设置为立即。 有人能指出我正确的方向吗? 谢谢!

有没有办法停止执行下一个与nodejsasynchronous系列function?

async.map(list, function(object, callback) { async.series([ function(callback) { console.log("1"); var booltest = false; // assuming some logic is performed that may or may not change booltest if(booltest) { // finish this current function, move on to next function in series } else { // stop here and just die, dont move on to the next function […]