Tag: asynchronous

asynchronous(同步)函数/空结果的callback不能进入

所以我使用asynchronous,这个函数会输出一些ID和计数的结果,但不是“callback” getWaitingGames: function(req,res){ var me = req.session.passport.user; var rez=[]; console.log("meeeeeeeeee"); console.log(me); GivenQuestion.find().where({user_id:me}).exec(function(err,data){ var tpm_id = data[0].partie_id; console.log(tpm_id); console.log(data); async.each(data, function(d, callback) { var parties = []; if (d.partie_id != tpm_id){ console.log(d.partie_id); parties.push(d.partie_id); tpm_id=d.partie_id; GivenQuestion.count().where({ partie_id: d.partie_id, user_id: me }).exec(function(e, countRes) { console.log(countRes); if (countRes==2){ rez.push(d.partie_id); callback(); } }); } }, function(err) { if (err) { […]

节点教程 – LearnYouNode – 杂耍asynchronous – 使用嵌套的callback

我试图从nodechool.io的“learnyounode”工作室解决“杂耍asynchronous”问题。 我在这里看到了很多关于这个问题的问题,因为URL是从一个循环中调用的。 我明白为什么这是行不通的。 我曾尝试过这样的事情。 var http=require('http'); console.log(process.argv[2],process.argv[3],process.argv[4]); fn(process.argv[2], fn(process.argv[3], fn(process.argv[4]))); function fn(url,callback){ http.get(url,function(response){ var string=''; response.setEncoding('utf8'); response.on('data',function(data){ string+=data; }); response.on('end',function(){ console.log(url,string); if (callback) { callback(); } }); }); }; 根据我的理解,第二个GET调用只有在第一个调用结束后才会出现,因为它在响应结束后才启动。 但是输出总是以不同的顺序。 我看到了正确的解决scheme。 我知道这样做不能利用asynchronous的优势,但不应该使callback按顺序输出?

在for循环中调用asynchronous函数

我有一个问题试图让我的循环行为同步,当我在循环的每个迭代进行asynchronous调用。 这是我的代码: pipeline: function(userContext, options, done){ var orderData = []; options.data.forEach(function(store, index){ store.orders.forEach(function(order){ shopify.getPipeline(userContext, {'order':order,'storeId':index}, function(result){ var snapshotId = "30775bf1bb854c5d84c9c2af37bc8fb0"; var resourceToQuery = config.structrUrls.getUrl("ConfigurationSnapshot") + '/' + snapshotId ; var requestOptions = { method: "GET", timeout: 8000 }; requestify.request(resourceToQuery, requestOptions) .then(function(snapshotResult){ result.snapshots = snapshotResult.getBody().result; result.snapshots.configurationPayload = JSON.parse(snapshotResult.getBody().result.configurationPayload); orderData.push(result); }) .catch(function(err){ console.log (err); done(err); }); }); […]

asynchronous并行重复条目

因此,我正在浏览一个名为candidates的数组,并使用数组中的每个项目执行某些任务,然后将结果推送到Firebase candfb 。 代码如下: var candidates = json.stageCandidates.candidate; var list = []; for (var i = 0; i < 20; i++) { var candidate = []; var id = candidates[i].candidateId; async.parallel([ function(callback) { votesmart.getDetailedBio(id, function(err, json) { if (!err && json.bio != undefined) candidate.bio = json.bio; callback(); }); }, function(callback) { votesmart.getAddress(id, function(err, json) { […]

了解节点callback

有人能带我通过所有的callback在这里发生了什么? 我是新来的节点,我迷路了! 我在下面评论了一些混淆的来源。 var utils = require('./utils'); "POST": function(request, response) { //collect the data utils.collectData(request, function(message) { message.objectID = ++objectIDcounter; messages.push(message); utils.sendResponse(response, { objectID: message.objectID }, 201) }) } // this is in utils.js: //why is a callback parameter passed to this function? exports.collectData = function(request, callback) { var data = "" request.on('data', function(chunk) { […]

使用ioredis为redis数据库增加id并将其分配给string

我在使用redis的博客上工作,并陷入了api级别。 我正在尝试做以下事情: MULTI INCR id SET post:{id} json_value //Stucked here SADD posts {id} EXEC 那么如何获得SET文章的ID:{id}? 我现在有下面的代码,这是不行的。 // Create post function cpost(json) { client.pipeline() .incr('id')) .set('post:' + client.get('id:post', function (err, results) { return results; }), json) .sadd('posts, client.get('id:post', function (err, results) { return results; })) // posts post .exec(function (err, results) { }); } 使用ioredis 任何想法如何获得身份证的价值?

如果函数不使用任何I / O,NodeJSasynchronous函数的目的是什么?

查看NodeJS bcrypt包( https://www.npmjs.com/package/bcrypt ),似乎有一对async / syncfunction: genSalt / genSaltSync 散列/ hashSync 比较/ compareSync 我了解asynchronous函数的用途,在函数具有I / O(如磁盘或networking访问)的情况下,以免阻塞事件循环。 但是,像上面这样的情况下,没有I / O的情况下,使用asynchronous版本有什么优势? select同步版本会损失什么? 我想这样做,因为它使更简单的代码,我看不出有任何缺点。 在https://stackoverflow.com/a/11606391/779159中,它表示“如果可能的话,您希望使用asynchronous版本,这样您就不会在密码散列期间占用您的节点处理”,但是您的代码不会无论如何,因为这些function使用的是CPU,而不是I / O,所以会受到阻碍吗?

node.js中的并行callbackUniverse?

我试图在node中实现shopify api,并且想要同步调用post请求,因为我想在发布后检索产品id并将其存储在数组中。 我正在使用一个名为deasync的库作为同步等待循环。 该脚本以前工作,突然停止工作。 当我login我的调用没有deasync循环时,我看到从shopify返回的响应,但是,当我运行我的脚本deasync循环,我的标识符保持空,deasync循环不断迭代。 我对node.js中的asynchronous请求比较陌生。 我的标识符variables的范围似乎是正确的。 我现在唯一可以想象的是,callback发生在一个并行的node.js宇宙中,与我的while循环分开。 任何帮助将不胜感激,thx! function postProduct(Store, product, variants) { var identifier = null; var post_data = { "product": product }; Shopify.post('/admin/products.json', post_data, function(err, data, headers) { identifier = { id: data.product.id, price: data.product.price, variants: variants }; }); while(identifier === null) { require('deasync').runLoopOnce(); } return identifier; }

什么是在香草节点实现队列的好方法?

我试图实现一个JavaScript队列,我想一些指针或一个很好的图书馆参考。

从一个ID数组到一个名称数组(mongo,nodejs)

我一直在这个几个小时左右…感谢您的任何帮助。 我有一个“用户”集合,每个用户有一个_id和一些名字( Username名, FirstName , LastName )。 我也有一个“组”集合,每个组都有Members ,这是一组用户的_id 。 起初,我想要一个简单的函数,接收一个ID数组,并把它变成一个很好的格式的string数组: FirstName + " " + LastName + " (" + Username + ")" 。 所以我为此做了一个简单的说明: var ans = []; for (i=0; i<arrOfIds.length; i++) { users.find({"_id": ObjectID(arrOfIds[i])}, function(err, result){ ans.push = result.FirstName + result.LastName + "(" + result.Username + ")"; }); } 但是因为mongo是asynchronous的,所以不起作用。 经过一番阅读,我安装了asynchronous ,我认为将解决我的问题。 […]