Tag: async.js

使用Caolan的asynchronous模块返回一个值

我想知道是否有可能进行一系列计算,并使用async.each方法获取返回的值。 一个非常简单的例子就是计算数组中所有元素的总和。 function Calculator() { } Calculator.prototype.sum = function(elements, callback) { var total = 0; async.each(elements, function(element, callback) { total += element; callback(); }, function(err) { if (err) throw err; //How can I get total as a returned value of sum? }); } 谢谢

使用asynchronous瀑布填充查询选项

林试图mongoosepopulate查询选项,但我不知道为什么查询选项不起作用。 我有用户架构: const mongoose = require('mongoose'); const Schema = mongoose.Schema; const UserSchema = new Schema( { username: { type: String, required: true }, email: { type: String }, name: { type: String }, address: { type: String } }, { timestamps: true } ); module.exports = mongoose.model('User', UserSchema); 和Feed模式: const mongoose = require('mongoose'); const Schema […]

node.js中的async.js瀑布:如何使用bind和这个?

我正在学习来自具有有限JavaScript级别的PHP背景的node.js。 我想我现在已经解决了asynchronous方法所隐含的思维方式的变化。 我喜欢它。 但是,和我之前的很多人一样,我很快理解了“厄运金字塔”的具体含义。 所以我build立这些小的“虚拟”路线和视图,以了解如何正确使用Async.js。 我只花了最后5个小时写下面的代码(当然重写了几十次)。 它的工作原理,但我想知道如何进一步,使这个代码更简单(不详细,更容易阅读和维护)。 我在网上发现了很多资源,特别是在这里,但总是通过一些信息在这里和那里。 我猜在这一点上,我应该使用“绑定”和“this”与async.apply使缩短瀑布调用的最后2个函数。 问题是获取对象“db”定义,所以我可以使用它的“收集”方法(第二个function)。 我真的search了一个谷歌的例子,但是你不能直截了当地find“asynchronous瀑布绑定”(以及我试过的许多关键字变体)的例子。 当然有答案,但似乎没有什么与这个特殊问题有关…矿石,很可能,我还没有理解他们。 有人可以帮我吗? 我会很感激。 app.get('/dummy', function(req, res) { var MongoClient = require('mongodb').MongoClient; async.waterfall( [ async.apply(MongoClient.connect, 'mongodb://localhost:27017/mybdd'), function(db, callback) { db.collection('myCollection', callback); }, function(collection, callback) { collection.find().sort({"key":-1}).limit(10).toArray(callback); } ], function(err, results) { if (err) console.log('Error :', err); else { res.render('dummy.jade', { title:'dummy', results: results} ); } […]

为什么每个任务的参数在async.waterfall中应该是相同的

对不起,因为我不知道如何描述清楚。 当我使用async.waterfall并且最后修复它时,我遇到了一个问题。 但我仍然不知道背后发生了什么。 我发现:当我们使用async.waterfall时 ,最后一个任务的参数数量应该和下一个任务一样。 否则,它会说"undefined is not a function" 。 我已经尝试了一些testing,我也试图找出它的源代码 。 对不起,我是JavaScript的新手。 我无法理解大量的JavaScript模式。 对我来说太难了 经过两个多小时的源代码苦苦挣扎,我需要一些帮助。 你可以给我一些关于这两个问题的提示: 它如何处理错误 ,在哪种情况下,会跳到最后一个callback? 根据我的testing结果, '', null,undefined不会引起跳转。 这种行为对我来说很有意义。 为什么参数的数量应该完全一样? 如果在上一个任务中只传递一个参数,当然这个callback将是未定义的。 但是我想知道很多。 我可以知道这些话:申请,封闭等,当他们在简单的演示分离。 但是当他们联合在一起的时候,我就变成了盲人。 简答题和长答案都非常赞赏。 如果可能的话,也许可以提供一些链接,我可以自己学习。 提前致谢。 代码示例: var async = require('async'); function test_waterfall() { async.waterfall([ function(callback) { /* works – pass all */ // callback(null, '1') // null 12 […]

Node.jsasynchronous并行TypeError:任务不是一个函数

我正在使用asynchronous模块来执行并行任务。 基本上我有两个不同的文件,dashboard.js和Run.js。 Dashboard.js module.exports = { func1 : function(){ console.log(“Funtion one”); }, func2 : function(){ console.log(“Funtion two”); } } Run.js var dashboard = require('dashboard.js'); var async = require('async'); async.parallel([dashboard.func1, dashboard.func2],function(err){ if(err)throws err; console.log(“ All function executed”); }); 我期待func1和func2并行执行,但是抛出错误 TypeError: task is not a function at C:\Users\..\java\realtime-preview\node_modules\async\lib\async.js:718:13 at async.forEachOf.async.eachOf (C:\Users\..\java\realtime-preview\node_modules\async\lib\async.js:233:13) at _parallel (C:\Users\\java\realtime-preview\node_modules\async\lib\async.js:717:9) 为什么我不能使用dashboard.func1,dashboard.func2甚至dashboard.func1是函数?

是async.each非阻塞? 的node.js

我想用对象做非阻塞循环数组,所以我使用了async.each函数: log.info("before"); async.each(products , function(prdt, callback){ for(var i = 0 ; i <4000000000; i++){ var s = i; } console.log("inside"); callback(); }, function (err) { console.log("end"); }); log.info("after"); 所以如果我运行上面的代码,我有这样的消息输出: before inside …. inside end after 如果async.each asynchoronous为什么我没有看到输出顺序? before after inside inside.. end UPDATE1:THX的答案,但如果我想在我的路由器执行该代码,我会阻止所有的响应我的服务器? 我需要改变什么?

Async.retry在等待间隔之前立即执行

async.retry({times : 25,interval : 30000},myFunction.bind(functionData),function(err,results){ console.log("===================================") console.log("Async function finished processing") return; }) myFunction被立即调用,这也是默认的5倍。 通话之间也没有等待期

为什么瀑布这么慢?

我正在使用asynchronous模块(请参阅https://github.com/caolan/async)Node.js和我的问题是… 为什么瀑布这么慢? 大约需要4秒钟来执行这段代码 App.post("/form", function(request, response) { Async.waterfall([ function(callback) { console.log("1."); callback(null, "some data"); }, function(data, callback) { console.log("2."); callback(null, "some data"); }, function(data, callback) { console.log("3."); callback(null, "some data"); } ], function(error, document) { console.log("4."); console.log("Done."); response.send(); // Takes 4 seconds }); } 产量 1. 2. // After 4 seconds 3. 4. Done. 感谢您的回复!

在NodeJS中插入一个大型的csv文件,200,000行+到MongoDB中

我试图分析和插入一个大的csv文件到MongoDB中,但是当文件扩展到100000行时,我得到了服务器的错误响应。 我需要插入的文件通常在200000行以上。 我已经尝试了批量插入(insertMany)和Babyparse(Papaparse)stream式方法来逐行插入文件。 但效果不佳。 节点api: router.post('/csv-upload/:id', multipartMiddleware, function(req, res) { // Post vartiables var fileId = req.params.id; var csv = req.files.files.path; // create a queue object with concurrency 5 var q = async.queue(function(row, callback) { var entry = new Entry(row); entry.save(); callback(); }, 5); baby.parseFiles(csv, { header: true, // Includes header in JSON skipEmptyLines: true, […]

NodeJS:asynchronous模块的并行性

我正在按照asynchronous模块的每个方法( https://github.com/caolan/async#each )。 它说该方法并行迭代数组。 “ 平行 ”是混淆了我的词。 AFAIK,现在JavaScript可以并行执行代码,因为它有一个单线程模型。 每种方法中显示的示例都着重于IOscheme。 我正在使用“每个”方法只是添加数组的数字。 如果存在并行性,我可以用我的例子来certificate吗? 谢谢阅读。