Tag: asynchronous

从node.js返回文件的parsing输出

我有我的文件阅读和正确parsing,但我似乎无法返回输出string。 我希望能够从它分配给客户端的variables中访问此string。 我正在使用asynchronous系列来帮助缓解callback地狱和输出击中控制台罚款。 但是,如果我在相同的地点下降返回输出,它不起作用。 build议? embed_analytics: function(){ var output; async.series({ read_file: function(callback){ fs.readFile(__rootpath+'/apps/analytics/data/analytics.json', 'UTF-8', function(err,data){ if(err) { console.error("Could not open file: %s", err); process.exit(1); } try { var config = JSON.parse(data); callback(null, config); } catch(exception) { console.error("There was an error parsing the json config file: ", exception); process.exit(1); } }); } }, function(err, results) { […]

处理消息队列和使用asynchronous

我写了一个小的testing节点应用程序,循环并将消息添加到队列(azure色的存储队列),如下所示: var queueService = azure.createQueueService(); var queueName = 'taskqueue'; // other stuff like check if created // loop called after queue is confirmed for (i=0;i<1000;i++){ queueService.createMessage(queueName, "Hello world!", null, messageCreated); } // messageCreated does nothing at the moment, just logs to console 我试图重写,以处理说100万创build使用asynchronous来控制并行运行的工作者函数的数量。 这比任何事情都是一个学习练习。 https://github.com/caolan/async#queue 这是asynchronous队列的基本设置,对于我需要更改的内容,我感到不知所措。 我不认为下面的工作: var q = async.queue(function (task, callback) { queueService.createMessage(queueName, […]

如何在node.js中使非IO操作同步与asynchronous?

我知道这个标题听起来像是十几个其他问题,可能是这样。 不过,我已经阅读了十几个问题,并search了一下,发现没有什么能够回答这些问题让我满意。 这可能是因为没有人正确回答,在这种情况下,你应该投票给我。 这可能是因为我很愚蠢,不了解其他答案(更可能),在这种情况下,你应该投我一票。 语境: 我知道Node.js中的IO操作被检测到,并且默认情况下是asynchronous运行的。 我的问题是关于仍然可能阻塞/运行很长时间的非IO操作。 假设我有一个for循环的函数blockingfunction函数,它可以增加或不增加(纯CPU周期,无IO),还有很多。 运行需要一分钟或更长时间。 说我希望这个function运行,只要有人向我的服务器发出特定的请求。 题: 很明显,如果我在代码的外层显式调用这个循环,所有东西都会阻塞,直到完成。 我读过的大部分build议都build议先启动所有其他处理程序/服务器等,然后通过process.nextTick或setTimeout(blockingfunction, 0)推迟函数的调用。 但是不会blockingfunction1然后只是阻止下一个周围的执行循环? 我可能是错的,但似乎这样做会启动所有我的其他东西,而不会阻止应用程序,但是当第一次有人提出请求导致blockingfunction被调用时,所有东西都会阻塞,只要它完成。 在setTimeout或process.nextTick调用中,是否将blockingfunction setTimeout与未来的操作共存,而不会阻塞它们? 如果没有,有没有办法使blockingfunctionfunction,而不重写它? 别人怎么处理这个问题呢? 我见过的很多答案都是“只要相信你的CPU密集的东西要快,它们就会”,但是这并不能令人满意。 缺less线程(在那里我可以保证,执行blockingfunction将与执行其他任何正在进行的交错),我应该重新编写CPU密集型/耗时循环使用process.nextTick来执行一个固定的,有保证的每个滴答快速的迭代次数?

节点jsasynchronous模块系列依赖关系

我想知道如何处理在Node.js中使用asynchronous库的依赖关系,请看下面的例子: db.open(function(error, client) { client.collection(('my-collection', function(error, collection) { collection.insert({ "email": "test@gmail.com" }, function(error, docs) { // Do stuff. }); }); }); 使用asynchronous库 : async.parallel([ function(callback) { db.open(function(error, client) { callback(error, client); }); }, function(callback) { // How do I access the "client" variable at this point? } ], function(results){ // Do stuff. });

向没有响应的服务器发出http.request时发生node.js错误

我正在编写一个node.js服务器,它充当客户端和一个位于node.js API下游一步的java服务器之间的API。 API接受来自客户端的传入HTML请求,重新格式化它们,并将它们发送给java服务器,java服务器返回对node.js API的答案,并将其返回给客户端。 除了服务器closures以外,这一切都很好用。 我需要赶上事件,就像我可以赶上502或302 …这是我的代码: async.waterfall( [ function(callback){ var options = { host: 'localhost', port: '8080', path: '/javaServerWork/' + req.query.foo + '?toDo=' + req.query.bar, method: 'GET', headers: { accept: 'application/json' } }; http.request(options, function(response){ response.on('error', function(exception) { Console.log("error here"); } if(response.statusCode == '200'){ callback(null, response); } else if (response.statusCode == '502') { res.send('502'); […]

调用mongoose保存方法时,async.js的瀑布方法挂起

我试图使用asynchronous瀑布方法,但是当它到达其中一个函数,它挂起。 我怀疑这是因为save()操作对于执行上下文来说太慢了,但这就是为什么我开始使用asynchronous的瀑布,所以我可以等待返回的值,直到它到达系列中的下一个函数(传递适当的数据,这将在我的情况下counted )。 //在我的用户控制器中: async.waterfall([ function(callback) { getSubmission(id, function(submission) { if (submission) { callback(null, submission); } }); }, function(submission, callback) { var submissionId = submission._id; getViews(submissionId, ip, function(count) { if (count) { callback(null, count, submissionId); } }); }, // Those top two functions work perfectly passing what // I need to this one which is […]

node.js如何用单进程实现asynchronouscallback

我不知道节点如何实现它的惊人的想法。 我使用它时有一个问题。 我必须读取四个文件file1.js file2.js file3.js file4.js并将它们连接成一个大的JavaScript文件result.js 。 保持秩序是很重要的。 所以使用readFileSync而不是readFile是正常的。 我知道这是一个不好的解决scheme。 任何人都有一个好主意来做到这一点? 问: node.js可以同时读取四个文件吗? 希望有人能解释node.js的原理,以及何时process.nextTick会被解雇。

async.parallel() – 最后一个函数没有被调用

出于某种原因,当我按照下面的方式使用async.parallel()时,从不打印'yyyyyyyyy'string。 为什么是这样? 我以为最后一个函数会被调用,一旦另外两个被调用。 var async = require('async'); async.parallel([ function() { console.log('xxxxxxxxxxx'); }, function() { console.log('ccccccccccc'); } ], function(err, results){ console.log('yyyyyyyyy'); });

将asynchronous函数转换为同步函数

我使用某个Node.js类来进行文本分类。 最简单的forms如下所示: function TextCategorizer(preprocessors) { … } “预处理器”是一种forms的函数的数组: function(text) { return "<modified text>" } 例如,它们可以用于删除标点符号,转换为小写字母等。 我可以像这样使用TextCategorizer: var cat = newTextCategorizer(preprocessors); cat.train(text1,class1); cat.train(text2,class2); … console.log(cat.classify(text3,class3); 预处理器被调用以便为每个训练文本和分类文本。 现在,我需要添加一个新的预处理函数 – 一个拼写纠正器。 最好的拼写纠正,我发现asynchronous(通过networking服务),所以,function看起来像这样: correctSpelling(text, callback) { … callback(corrected_version_of_text); } 即它不返回一个值,而是用该值调用一个callback函数。 我的问题是:我怎样才能使用correctSpelling函数,作为我发送到TextCategorizer的预处理器数组中的预处理器之一?

Node.js:asynchronous代码+ jsclosures的麻烦

我无法适应Node的单线程+asynchronous性,再加上javascript的函数闭包。 假设我有这样的东西: function foo(bar) { someAsyncFunction(function callback(err) { // do stuff with 'bar' }); } 请让我知道,如果我失去了一些东西; 但我的理解是: 由于closures, callback会有一个参考 bar 但是,如果在bar = 20时调用foo一次,那么在第一次调用callback 之前再次使用bar = 42 ,那么bar在第一次调用foo callback中将是42。 换一种说法: foo(20) #1 someAsyncFunction(function callback() {}) #1 foo(42) #2 someAsyncFunction(function callback() {}) #2 callback() #1 ——->使用bar = 42 callback() #2 ——->使用bar = 42 我纠正这个吗? (如果bar是原始对象还是对象,这是否重要?)。 如果是这样,我可以做些什么来确保callback使用正确的值的bar (ASIDE从传递bar一直向下和调用堆栈)? […]