Tag: asynchronous

nodejsasynchronous同一个参数的函数数组?

如何将相同的参数应用于一组函数? 作品: async.parallel([func(arg, arg2), func2(arg, arg2)], function() { next(); }); 数组里有不确定的/各种函数的function,所以我不知道我应该把哪些函数发送给并行方法。 在各种文件中,我正在构build函数数组: funcArray.push(func2) 结果我有这样一个数组: [func, func2] 我想只是做: async.parallel(funcArray, function() { next(); }); 所有的function都有相同的论点。 我怎样才能做到这一点? 谢谢。 结束写我自己的: _.each(obj, function (func) { func(req, res, function () { i++ if (i == objSize) { next() } }) })

我可以检查一个asynchronous函数是否正在运行?

我正在构build一个调用各种函数的shell脚本。 当所有的function都完成后,我想closures数据库连接并退出。 如果我能以某种方式获得一个事件,每当一个asynchronous作业开始和结束,我可以处理它,但这有可能吗?

这两个node.js模块做同样的事情吗?

https://github.com/caolan/async https://github.com/maxtaco/tamejs 这是两个模块。 对我来说,似乎是一样的东西,对吧? 或者…他们在不同的情况下使用吗?

使用节点序列化redis数据

我正在使用redis和节点(与node_redis ),我想从redis序列化数据到一个XML文件(使用simple-xml-writer ),但我偶然发现节点的asynchronous行为。 我有一个数据集的a,b,c,d和e在redis中存储为一个散列,关键是数据:a,data:b data:c …,每个键访问一个散列。 现在我的XML文件应该是这样的: <root> <data record="a"> (data for a) </data> <data record="b"> (data for b) </data> … </root> 我的做法是做一些事情: myobjects = Array.new(); ["a","b","c","d","e"].forEach(function(str) { database.hmget("data:" + str,function(err,obj){ myobjects.push(obj) }); }); now_serialize_myobjects(); 是否有可能等待forEach -loop完成, 并确保database.hmget()中的所有对象都存储? 所以当调用函数now_serialize_myobjects() ,所有对象都覆盖了吗? 什么是最好的方法来解决这个问题?

我应该如何去强制node.js同步?

我知道asynchronous性是node.js的一半,它真的很棒,很有效率。 然而在某些情况下,这种编程模式只是矫枉过正而且很困难。 例如,如果你想编写一个脚本,需要一些用户input,并使用它来创build一个MySQL行并保存它(我刚刚这样做)。 真的很烦人,必须为程序的每一个小步骤创build一个单独的函数,然后让它们全部相互调用。 那么应该如何处理这种情况呢? 我尝试了一步 ,但它不会与咖啡脚本工作,因为它需要函数以经典的方式( function foo() {/* Bar */} )声明。 咖啡脚本改为创build匿名函数并将它们分配给局部variables( var foo = function() {/* Bar */} ) 我想混合一个方法让stream程等待callback运行会更简单。 抛开asynchronous性的争论,我将如何去做这件事?

Express / Node.JS中间件引起错误,继续处理

我开始在NodeJS / Express下,我正面临以下问题(我可能还没有获得asynchronous编程的所有技巧) 我做了一个中间件负责检查是否传递了一个oauth_token参数(实际上是在我的节点服务器上实现了oAuth层) 我正在这样做: function myMiddle(req,res,next) { var oAuthToken = req.query["oauth_token"]; if (oAuthToken == undefined) { res.send(406); res.end(); next(new Error('No token provided')); } /* Basically doing some DB stuff with MongoDB, connecting and using oAuthToken provided to query, etc.. */ 问题是,当他没有收到查询string中的oauth_token参数时,我希望代码“死”。 这实际上引起了我一个错误,并且向我的HTTP客户端返回了大量的错误,但是代码一直在处理后面,并且引发了由于我的处理代码导致的可变标头错误,并且我的脚本死亡了。 我失踪的东西? 感谢提前。

节点asynchronous库绑定这个

我正在使用asynchronous库( https://github.com/caolan/async )在节点上尝试执行与mongoskin( https://github.com/guileen/node-mongoskin )asynchronous的多个db查询 问题是使用像这样的地图function app.post '/events', (req, res) -> storage.events.getByUser req.session.authId, (events) -> async.map events, storage.codes.getCountByEvent, (err, results) -> res.send results 它将@绑定到getCountByEvent函数上的全局名称空间,是否有任何具有asynchronous库经验的人能够给我指导最好的方法来解决这个问题? 这是storage.codes实现的示例 class Codes constructor: (db) -> db.bind 'codes', getCountByEvent: (event, callback) -> @.find(event: event._id).toArray (err, res) -> callback res.length return db.codes exports.Codes = Codes 调用getCountByEvent之外的async.map它会正常工作 提前致谢

请求处理如何与rails,redis和node.jsasynchronous?

对于Web开发,我想混合使用rails和node.js,因为我想从两个世界中获得最好的效果(rails for fast web development and node for concurrency)。 我知道有些人select使用完整的ruby stack,并将eventmachine集成到rails controller中,这样每个请求在事件循环模型中都可以使用光纤进行非阻塞。 我已经能够理解这是如何工作的大局。 但是,我想尝试使用消息队列概念的rails和node.js进行非阻塞请求处理。 我听说这可以通过使用redis作为中介来实现。 我仍然无法弄清楚现在是如何工作的。 从我所能理解的:所以我们有2个应用程序A(rails)和B(node.js)和redis。 Rails应用程序将处理来自通过REST方式通过控制器的用户的请求,然后从那里的轨道将通过redis传递,然后redis将形成队列和node.js应用程序将拿起该队列,并做任何必要的事后(写或从后端数据库读取)。 我的问题: 那么如何提高并发性和可伸缩性呢? 从我所知,因为rails通过控制器同步处理请求,然后写入redis,即使node.js结束可以asynchronous拾取队列,请求仍将被阻塞。 (我有一种感觉,它不是asynchronous的,但如果不是端到端的非阻塞)。 如果redis是中介,node.js会被认为是代理还是应用程序? 我是redis的新手,仍然在学习。 如果我为我的后端数据库(如mongoDB或couchDB)使用100%的noSQL解决scheme,它们可以被redis完全replace,或者redis更像是一个类似rabbitMQ的消息队列工具吗? 消息队列是一个不同于线程或事件循环模型的并发概念,还是应该补充它们? 这就是我的问题。 我是消息队列概念的新手。 将欣赏任何帮助和指向正确的方向和文章,帮助我了解更多。 谢谢。

asynchronous调用串联生成的函数

我在串行调用生成的函数有问题。 我正在使用asynchronous库和代码似乎工作时没有深呼叫需要callback。 当我添加真实场景时,会引发错误。 这里是工作的例子,返回0到4的数组: Scrape.prototype.generatePageFunctions = function() { var functionList = new Array(), self = this; for (var i = 0; i < this.pageSet; i++) { (function(i) { functionList.push(function(cb) { // Inner functions which will be called in seriers var timeoutTime = parseInt(Math.random() * 5000 + 3000, 10); setTimeout(function() { self.setIndex(i); //self.getSite(function) cb(null, i); }, […]

用node.js apirecursion地观察一个目录

我试图recursion观看一个目录,我磕磕绊绊的命名空间问题。 我的代码如下所示: for (i in files) { var file = path.join(process.cwd(), files[i]); fs.lstat(file, function(err, stats) { if (err) { throw err; } else { if (stats.isDirectory()) { // Watch the directory and traverse the child file. fs.watch(file); recursiveWatch(file); } } }); } 看来我只看最后一个目录stat'd。 我相信问题是循环在lstatcallback完成之前完成。 所以每次调用lstatcallback,file =。 我如何解决这个问题? 谢谢!