Tag: asynchronous

设置和访问asynchronous函数中的全局对象

这样的代码: fileArray = ['a.json','b.json','c.json'] dict = {} fileArray.map (f) -> fs.readFile f, (err, data) -> json.parse data, (k, v) -> dict[k] = v 我想写dict对象到一个文件。 我如何等待所有的asynchronousfunction完成? 或者还有什么其他的办法来做到这一点?

清理Javascript / Nodejs代码

我是新来的JavaScript / nodejs,我正在努力清理它的一些代码。 我正在使用asynchronous nodejs库来处理使代码的asynchronous部分更容易。 现在代码看起来像这样: Object.prototype.method = function(){ var self = this; // bunch of code async.forEach(self.someArr, function(someObj, callback){ self.somefunc(someObj.someProp, function(err, aNewObj) { if (err) { return callback(err); } self.someOtherArr.push(aNewObj.someOtherProp); callback(); }); }, callback); } 不过,我想用另一个在对象原型上定义的命名函数replace匿名函数。 由于代码结构的方式,我不知道如何创build一个新的函数传递到async.forEach同时保持适当的self价值。 我想要它看起来像: AnObject.prototype.method = function(){ var self = this; // bunch of code async.forEach(self.someArr, self._newMethod, callback); } AnObject.prototype._newMethod […]

如何确定一个asynchronous调用是否是最后一个

使用asynchronous语言(在我的情况下是node.js ),我最终会得到一个二维循环和一个response : firstArray.forEach(function(first){ sencondArray[first].forEach(function(second){ doStuff(function callback(resultSum){ if(isLastCallback(this)) response.send(resultSum); }); }); }); 我的第一个方法是获得isLastCallback的正确结果,使用提供的计数器i isLastCallback迭代,但结果是一团糟。 检测当前callback是否是最后一个callback的常用方法是什么?

与NodeJS和Neo4jasynchronous行为的问题

我是一个自学的新手程序员,使用Angular.js,Node.js和graphics数据库neo4j。 现在我试图得到一个非常基本的查询来执行并返回数据到客户端。 执行后,我得到一个closures服务器的错误。 接收到获取请求后执行以下function: exports.test = function (req, res) { var neo4j = require('neo4j'); var db = new neo4j.GraphDatabase('http://localhost:7474'); var query = [ 'MATCH n', 'RETURN n.name, n, labels(n)' ]; db.query(query, function (err, results) { if (err) {throw err}; var data = results.map(function(result) { return result; }); res.send(data) } )}; 我在控制台日志中得到以下错误:java.lang.ClassCastException:java.util.ArrayList不能转换为java.lang.String (我可以提供整个日志,如果它会certificate是有用的) 我将非常感激任何见解。

asynchronousfunction使用asynchronous

我知道这听起来很愚蠢,但我不明白如何使用async来处理现有的asynchronous函数。 例如,考虑一些节点模块中定义的一些asynchronous函数foo(arg1, arg2, …, argN, callback) 。 说我想用在async的waterfall(tasks,[callback])function。 我怎么可能做到这一点? //original call foo(x1,x2,xN, function goo(err, res) { // do something }); //using async async.waterfall([ function(callback) { foo(x1,x2,…,xN, callback); } ], function goo(err, res) { // do something }); 但我不能这样做,因为callback需要在函数结束之前调用。 帮帮我?

node-amqp和async ack

我正在使用rabbitmq的项目。 我必须使用的队列(让我们称之为“testq”不时得到大约35000件必须处理的项目。 基本上(很短): var q = new Queue(); q.subscribe('testq', { ack: true, prefetchCount: 100 }, function(doc, object, queueOptions, originalDocument) { //do some action originalDocument.acknowledge(); }); 我现在的问题是:我想一次获得100条消息(prefetch count = 100),但是我什么时候知道所有的100条消息都已经被处理,这样我就可以确认并获得下100条消息了? “做一些行动块”是asynchronous:( 感谢您的任何build议!

具有初始化callback的全局variables

我使用了一个第三方模块( 一个拼写检查器 ),它有一个很长的初始化过程,并在初始化完成后调用一个callback函数。 我需要在我的应用程序的几个不同的文件(子模块)中使用这个模块。 在每个子模块中初始化一个不同的拼写检查器看起来像浪费时间和空间,所以我正在寻找一种方法来初始化一个拼写检查器,并将其用于所有模块。 我想到的一个select是将拼写检查器实例放在子模块中,在子模块中初始化,并从其他子模块中获取子模块。 但是,我不知道如何处理初始化callback – 我怎样才能确保我的其他子模块在初始化之前不会使用拼写检查器实例? 我想到的另一个select是创build一个单独的应用程序,与拼写检查器,并从我的应用程序通过TCP / IP或其他机制联系。 但是这也看起来很浪费 – 太多的通信开销。 有没有更好的办法?

在快速stream读取stream中平衡缓慢的I / O

在node.js中我有一个读取stream,我希望重新格式化并写入数据库。 由于读取stream速度快且写入速度慢,因此随着写入队列的build立(假定stream为gb的数据),node.js队列可能会不堪重负。 如何强制读取等待代码的写入部分,所以这不会发生阻塞? var request = http.get({ host: 'api.geonames.org', port: 80, path: '/children?' + qs.stringify({ geonameId: geonameId, username: "demo" }) }).on('response', function(response) { response.setEncoding('utf8'); var xml = new XmlStream(response, 'utf8'); xml.on('endElement: geoname ', function(input) { console.log('geoname'); var output = new Object(); output.Name = input.name; output.lat = input.lat; output.lng = input.lng; output._key = input.geonameId; data.db.document.create(output, data.doc, […]

C#非阻塞IO(例如:反应堆模式)

我想为我的新产品构build新的服务器。 它将被http驱动,并且必须处理很多请求。 大多数情况下,服务器将查询数据库和处理结果(处理本身与数据库相比可以忽略不计)。 我现在也有一些限制资源。 我曾经用nodejs构build过这样的东西,但是我厌倦了dynamic的input。 我想要的东西与静态types和一些从JavaScript打破。 对于第一部分我想到了TypeScript。 对于第二个C#。 我可以在C#上构build与Node.JS几乎一样的服务器吗? 我不需要multithreading逻辑,我想asynchronous事件驱动io。 有图书馆可以帮忙吗? 有没有任何开源项目,我可以看看使用async io?

代码模式相当于链接如果/ elseif在阻塞条件在节点JS?

我想在Node.JS中写入以下同步代码的等价物: function(param) { if(condition1(param)) {f(param);} else if(condition2(param)){g(param);} else if(condition3(param)){h(param);} … } 在条件的validation可能做一些数据库,文件系统,甚至HTTP I / O; 所以不应该在这样的同步代码中运行。 简单但肮脏的解决scheme:可以像回答这个问题一样链接callback如何在Node JS中编写一个非阻塞的if语句? 但是,当条件数量很多时,很容易变得难以理解和难以修改(例如改变条件的顺序)。 有没有一个很好的模式,可以用来保持这样的代码整洁?