我正在尝试调整图像的大小后,我已经下载它们使用nodejs,请求和gm模块,但我很难正确地pipe理的东西了。 var fs = require('fs'); var path = require('path'); var gm = require('gm').subClass({imageMagick: true}); var request = require('request'); var async = require('async'); var folderImages = './images/'; var q = async.queue(function (task, callback) { // Renaming the images var thumb350 = task.target.replace('.jpg', '-350.jpg'); // The target path/images var target350 = path.join(folderImages, thumb350); // Download the images […]
我正在尝试在我的node.js项目上执行jasmine-nodeunit testing。 我需要得到一个文件path的数组,然后将该数组传递给unit testing。 但是,因为这是asynchronous的,我必须使用callback,我不能返回数组。 我无法弄清楚如何将检索到的数组发送到unit testing。 这是我的代码: module.exports = { results: [], walk: function(){ var nodeDir = require( "node-dir" ); nodeDir.files( __dirname + "/public/img", function( err, files ){ if ( err ){ throw err; } getData( files ); } ); }, getData: function( files ){ console.log( files ); results = files; } }; 这是我的unit […]
我目前有一个nodejs脚本,它从CSV文件中读取数据,然后根据每行数据写入许多不同的CSV文件。 有300个CSV(大约40Gbs价值)处理,所以我添加asynchronous到我的脚本读取和写入数据同时跨越所有内核。 async.mapLimit(filePaths, 4, streamZip, function (err, results) { console.log('finished'); }); 但事实certificate,这不是asynchronous。 这个代码实际上需要更多的时间来完成,而不是单独处理每个文件,因为它只使用单个核心。 似乎有许多不同的方式来使用更多的核心群集 , subprocess , networking工作者和工人农场 还有其他问题像这样问 但他们似乎都希望使用HTTP或Express,并作为服务器运行,或者他们调用像ls这样的外部程序。 而不是像在Python中那样运行一个多处理池。 任何人都可以提供一个例子或帮助如何使用线程或进程,并行读取多个CSV文件,并写入相同的fs.createWriteStreams? 谢谢 更多我的代码在这里: function streamZip(filePath, callback) { var stream = fs.createReadStream(filePath) .pipe(unzip.Parse()) .on('entry', function (entry) { var fileName = entry.path; entry.pipe(csvStream) }) var csvStream = csv() .on("data", function(data){ var identifier = data[0]; if (identifier […]
我正在使用快速框架工作node.js Web应用程序,我需要得到结果forms的MySQL数据库。 我想得到同步的结果。 有可能的。 请build议。 例如: result = [{id:4,is_parallel:'No',name:'Pankaj'},{id:5,is_parallel:'Yes',name:'uu'},{id:6,is_parallel:'No',name:'kk'}] for(val in result){ if(result[val].is_parallel=='No'){ var parallelArray = {}; parallelArray.id = result[val].id; parallelArray.name = result[val].name; newArray.push(parallelArray); console.log(newArray); }else{ $sql ='select id,process_wf_id from process_workflow_parallel_branch where process_wf_id='+result[val].id+''; connection.query($sql, function(err, results) { if(err){ callback(err,null); }else{ if(results.length>0){ for(val in results){ // } } } }); } }
我正在使用Node.js,我想检查一个文件是否存在,并返回结果到一个对象的属性。 我想这样: var file_exists = function(file) { return fs.stat(file, function(error, stat) { if (error) { return false; } else { return true; } }); }; result = []; for (var i = 0; i < files.length; i++) { result.push({ exists: file_exists(file[i]) }); } 但是返回undefined。 这是因为asynchronous? 我怎么解决这个问题? 谢谢。
我正尝试使用nodejs(es6 + babel)和mocha一起。 这是我testing的基类: import cheerio from 'cheerio'; import ResourceRequest from './ResourceRequest'; export default class HtmlValueParser { constructor(url, headers) { this.rr = new ResourceRequest(url, headers); this.body = null; this.$ = null; } getValue(query) { if (!query) { return; } if (this.$ === null){ this.$ = cheerio.load(this.body); return 'toto'; }else { return 'titi'; } } getAValue(query, […]
我想从MySQL查询存储在一个数组(docAutocomplete)的结果,并在所有的查询完成后,我想看到最后一个数组。 我正在使用asynchronous系列为此目的。 问题是数组不打印任何东西,因为它看起来没有任何数据(函数,结果)。 var mysql = require('mysql'), async = require("async"); var connection = mysql.createConnection({ host: 'xx', user: 'xx', password: 'xx', database: 'xx' multipleStatements: true }); var docAutocomplete = []; async.series([ function(callback) { connection.connect(); connection.query('select x from a; select b from a', function(err, rows, fields) { if (err) throw err; for (var i = 0; i […]
我正在研究一个NodeJS函数,它有一系列需要运行的asynchronous任务。 我从数据库中读取了一系列tasks ,每个task都有一个“runFrequency”属性。 例如 : var tasks: [ task1: { type: doSomething, …, runFrequency: 10 // Needs to run every 10 seconds. }, task2: { type: doSomethingElse, …, runFrequency: 30 // Needs to run every 30 seconds. }, task3: { type: doSomething, …, runFrequency: 10 } ]; 我需要调用一个processTask()函数在每个runFrequency设置中运行每个任务,但一次只能运行一个任务。 (10秒的运行频率只是一个目标,不需要精确到10秒)。 例 12:00:00: processTask(task1); 12:00:02: task1 completes, […]
我的代码非常简单: async.eachLimit(lines, 5, function iterator(line, complete) { console.log(line) complete(null); }, function done(err) { if(err) throw err; console.log('done yo!'); }); 但是,我不断收到以下错误。 我不了解什么? RangeError: Maximum call stack size exceeded
使用像下面的节点asynchronous的香草节点脚本工作得很好: async = require('async'); async.waterfall([ function (c) { console.log(1); c(null); }, function (c) { console.log(2); c(null); } ]); 上面通过node test.js运行时输出: 1 2 ……如预期的那样。 但是,如果我把代码放在node-lambda处理程序中: var async = require('async'); exports.handler = function( event, context ) { console.log( "=================================="); async.waterfall([ function (c) { console.log(1); c(null); }, function (c) { console.log(2); c(null); } ]); console.log( "=================================="); context.done( ); […]