Articles of asynchronous

使用node.js +asynchronous模块从同步callback创build同步循环

stream行的node.js模块asynchronous包括集合和控制stream程的function,其中一些版本可以并行或串行操作。 但是其中我无法find构build一个串联循环的方法。 我试图做同样的这个伪代码: forever { l = getline(); if (l === undefined) { break; } else { doStuff(l); } } 如果我想所有调用getLine()并行调用,我可以使用async.whilst 。 如果我想迭代一个数组而不是像for或while循环那样使用async.eachSeries 。 我能用什么来获得控制stream中的series行为而不是集合迭代?

套接字streamasynchronous调用到rpc行动内的MySQL

首先,我需要告诉你,我对nodejs,socketstream,angularjs和JavaScript的奇观一般都很陌生。 我来自Java背景,这可能解释我对做asynchronous的正确方式的无知。 为了玩弄东西,我从americanyak安装了ss-angular-demo 。 我现在的问题是,Rpc似乎是一个同步接口,我的电话mysql数据库有一个asynchronous接口。 如何在Rpc调用时返回数据库结果? 以下是我使用socketstream 0.3所做的工作: 在app.js我成功地告诉ss允许我的mysql数据库连接通过把ss.api.add('coolStore',mysqlConn); 在那里在正确的地方( 正如在socketstream文档中所解释的 )。 我使用mysql npm,所以我可以在Rpc中调用mysql 服务器/ RPC / coolRpc.js exports.actions = function (req, res, ss) { // use session middleware req.use('session'); return { get: function(threshold){ var sql = "SELECT cool.id, cool.score, cool.data FROM cool WHERE cool.score > " + threshold; if (!ss.arbStore) { console.log("connecting to mysql […]

我应该在node.js和Express中链接方法和函数吗?

就像其他人一样,看起来,我已经开始使用node.js和Express框架了。 虽然我对客户端Javascript有很大的信心,但是当然依赖于JQuery,我用Node.js玩弄了很多,这让我对Javascript的实际工作缺乏正确的理解。 因此,这个问题。 我看过的每一个教程,包括Holowaychuk先生自己的教程,都是这样做的: var express = require('express'), app = express(); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use('/images', express.static(__dirname + '/public/images')); app.get('/', <do something>); app.get('/:something', <do something else>) app.listen(3000); 如果我正在为客户端JavaScript写这样的东西,我会试图引用一次app对象,并链接任何函数或方法,从而产生这样的: var express = require('express'), app = express(); app.use(express.methodOverride()) .use(express.cookieParser()) .use('/images', express.static(__dirname + '/public/images')) .get('/', <do something>) .get('/:something', <do something else>) .listen(3000); 所以我的问题是:这两个function不同? 我在冒着不同寻常的神灵冒险吗? 任何帮助和链接的教程称为“只是因为你玩过JQuery并不意味着你懂Javascript的任何东西”将受到感激。

在asynchronous比赛中使用第一个结果/获胜者将参加所有比赛

基本上,我想打两个asynchronous调用对方,只使用赢家。 我似乎无法弄清楚如何做到这一点,只有如何防止它。 这是远程可能的吗? Lame伪代码: //rigging a race function MysqlUser() { setTimeout(function(){ return "mysqluser"; }, 500); } function ADUser() { setTimeout(function(){ return "aduser"; }, 1000); } function getUser() { var user = null; user = ADBind(); user = MysqlBind(); //if user != null return user; //else? } 我想(在这种情况下)为MysqlUser胜过ADUser。 任何帮助,将不胜感激。

Javascript – 对象的属性是由一个函数决定的,节点不在等待它

我有一个相当简单的JavaScript / jQuery的obeject由一个Node.js刮刀build立。 一切工作,因为它应该( obj.prod_name_select和其对手返回jqueryselect器,他们parsing就好了在节点)。 这是对象: var product = { name : $(obj.prod_name_select).text(), systemName : function(){ return product.name.replace(/\s+/g, ' '); }, gender : obj.gender, infoLink : link, designer : $(obj.label_name_select).first().text(), description : function(){ var text = $(obj.description).each(function() { var content = $(this).contents(); $(this).replaceWith(content); }); return text; }, price : $(obj.price_select).first().text(), store : obj.store, category : […]

如何将此node.async代码转换为使用q? 我需要退还一个承诺吗?

在我的控制器内的“视图”方法以前使用node-async但我想尝试使用q 。 我目前正试图将其转换 exports.view = function (req, res) { var category = req.params.category, id = req.params.id, ip = req.connection.remoteAddress, slug = req.params.slug, submission, userId = typeof req.session.user !== 'undefined' && req.session.user.id ? req.session.user.id : null, views; var getSubmission = function (submissionId, callback) { Submission.getSubmission({ id: submissionId }, function (err, submission) { if (err) { callback(err); […]

JS闭包,Redis,循环,asynchronous::空数组

我放弃了这一点。 可能一些明智的stackoverflow僧侣请修复我的错误? 代码是自我解释。 客户端发送房间名称,服务器执行redis查找并将有效房间推送到arrays。 在添加所有房间之后,该列表应该被发射到客户端。 问题是closures,asynchronous等基础。 我理解这个问题,但不能得到解决方法,因为数组需要保留在函数内。 棘手。 码: function roomList(socket){ var roomlist = [], rooms = getRooms(), p = /pChannel_/; redis.select(7, function(err,res){ for (var k in rooms){ if(rooms[k] != '' && p.test(rooms[k])){ var key = 'channel:'+rooms[k]; redis.hgetall(key, function (err, reply) { if(reply){ var c = io.sockets.manager.rooms[rooms[k]]; roomlist.push( Array(reply['name'],c.length,reply['icon']) ); } else { console.log('nothing found'); […]

可以有很多function(超过10)来处理Node的asynchronous性质(特别是在添加到MySql数据库时)

当我得到一个API调用时,我必须安装到大约4,5个表,因为一个条目具有子项目,而子项目又具有子项目。 因为我必须将数据从第一个插入到第二个(使用父ID),我最终有太多的function(如functioninsertTable1,insertTable1Kids,insertTable1KidsKids)等等.. 这是不错的devise? 这让我很担心,我正在使用这么多的function。有没有更好的方法来处理这个问题?

Node-Webkit中的NodeJs Async.waterfall

我试图在node-webkit应用程序中使用nodejsasynchronous模块(瀑布方法),但它不能正常运行。 它似乎直接跳到链中的最后一个项目,忽略其他的一切。 尽pipe我的代码在nodejs中完美工作。 我认为这可能是我的代码,但即使从asynchronous文档的以下示例也是如此。 async.waterfall([ function(callback){ callback(null, 'one', 'two'); }, function(arg1, arg2, callback){ callback(null, 'three'); }, function(arg1, callback){ // arg1 now equals 'three' callback(null, 'done'); } ], function (err, result) { console.log(result) // result now equals 'done' }); 但是下面的例子使用async.series方法确实有效: async.series([ function(callback){ // do some stuff … callback(null, 'one'); }, function(callback){ // do some more stuff […]

节点 – 如何确保一切都在asynchronous环境中完成

我不是新来的编程,但我正在进入Node.JS. 我了解阻塞与非阻塞操作。 我知道把事情推向非阻塞是Good Thing™。 我想了解的是,如何确定,如果我asynchronous推送东西,如何确保程序在继续处理/返回之前收集来自所有不同请求的所有数据? 以下是使用node-mysql的一些示例代码。 为了争辩,可以是任何东西(Mongo,MySQL,文件读取,http请求等),因为我意识到mysql模块有能力自己平行。 function getUserInfo(userID, myDB){ var users, profile, login; // Get all of the account data myDB.query("SELECT * FROM `users` WHERE `id`='"+userID+"' LIMIT 0,1", function(err, row){ users = JSON.stringify(row); } // Get all of the profile data myDB.query("SELECT * FROM `profile` WHERE `id`='"+userID+"' LIMIT 0,1", function(err, row){ profile = JSON.stringify(row); […]