Articles of asynchronous

async.eachSeriescallback调用多次

在这个function中: function method2(friends, callback) { //friends is an array of objects var ids = _.pluck(friends, 'id'), arrays = cut(ids, 24), //cut() splits array into smaller arrays of given length code = require('fs').readFileSync('…').toString(); var imp,j; async.eachSeries(arrays, function(i, cb1) { … vk.request('execute', {code:code}, function(err, resp, body) { //vk.request passes its callback to node-request module //at this point, […]

使用Node.js更好地理解callback

任何人都可以向我解释什么是在这里? 我一直在学习节点和callback,我有种得到的概念,但可以使用一些更多的细节。 所以在函数“myCallback”中有一个日志到控制台,但在“useItNow”没有日志到控制台,结果是“从myCallback使用它”在控制台。 我怎么不需要像使用它现在返回? 如果不是callback,这是否正确表示使用它? var usingItNow ='使用它' 有人可以发布一些好的内容的链接? 是使用它现在适当camelcase或应该使用它? var myCallback = function(data) { console.log('from myCallback ' + data); }; var usingItNow = function(callback) { callback('From Using it'); }; usingItNow(myCallback);

承诺的节点模式

我有一个节点问题。 我想调用一个数据访问对象,可能还有其他的内容,一旦完成渲染一个Jade模板 就像是 : provider1.getData(args, function(error, results) { /* do something with each result element */ for(int i = 0l i < results.length; i++) { provider2.getData(args, function(error, items) { store.push(items); }); } }); /* Here I want to ensure that the above operations are complete */ result.render( …. , { data:store }); 基本上,我想确保数据检索完成之前,我与数据呈现模板。 目前,渲染发生时,variables存储不会被填充。 我看过看起来很有希望的承诺。 […]

如何推迟承诺,直到async.each完成?

如何在asynchronous操作完成之前延迟承诺? 我正在使用asynchronous和蓝鸟图书馆。 只要我启动我的程序,done()函数返回一个空的或接近空的'masterlist'对象的错误。 为什么在迭代器完成操作之前不是asynchronous等待呢? // bundler.js var masterlist = { "children": [] , "keywords": [] , "mentions": 0 , "name" : "newsfeed" , "size" : 0 } // initialize() returns a promise with the populated masterlist exports.initialize = function() { return new Promise(function(resolve, reject) { // pullBreakingNews() returns a promise with the breaking news articles […]

我如何使用arr.forEach来调用asynchronousJavaScript的redis调用?

我正在使用node.js和redis。 我有一堆key的redis数据库。 像这样的东西: 用户/克里斯/药水用户/皮特/药水用户/克里斯/种族用户/皮特/种族用户/克里斯/武器用户/皮特/武器 我想做一个redis调用,它检索所有的用户状态,把统计信息放到一个JS对象中,然后传递给客户端在浏览器中显示字符统计信息。 使用javascript我把用户名chris注入到redis调用中,像这样: KEYS user/u/* 它返回: 1) "user/chris/weapon" 2) "user/chris/race" 3) "user/chris/potion" 现在我可以迭代这些结果,用GET获取每个键的值,并创build一个javascript对象。 看起来超级简单,所以我写的代码。 我很快遇到了使用forEach的问题: var redis = require('redis'); var client = redis.createClient(); exports.getUserObject = function(requesteduser, callback) { var userstats = {}; // the object to hold the user stats once retrieved from the db client.KEYS('user/' + requesteduser + '/*', function(err, replies) […]

如何发送variables的当前值到asynchronouscallback

我有这个问题相同的问题,但不能得到解决scheme的工作。 我正在尝试编写一个nodejs脚本,它将首先检查mongo中的caching值,但是如果它不存在,那么就closures并计算它。 问题是,findOne()callback没有得到循环variables的原始值,所以callback不能正确计算和存储的价值。 (我已经省略了实际的提取,存储和返回,以专注于我有的实际问题)。 无论我做什么,我都无法获得原始价值来回馈。 for (var d=start_date; d<now; d.setHours(d.getHours()+1)) { (function(key) { console.log('caller='+key) db.collection('avgs').findOne( { date: key.toISOString() },function (err,data) { console.log('callback='+key); if (data) { //return data } else { // compute average for given date , insert into database and return value } }); })(d); }; 控制台日志显示了这一点 caller=Tue Mar 25 2014 00:00:00 GMT+1030 (CST) […]

为什么queryAsync()会导致添加元数据?

我使用queryAsync()按问题的答案规定,它的工作原理,但它增加了很多额外的元数据到我的查询结果,否则是一个简单的查询。 以下是我用来处理/执行查询并logging结果的内容: var retrieveSettings = Promise.method(function (username, connection) { console.log('User ' + username + ' retrieving settings…'); var q = 'select * from sales_settings'; return connection.queryAsync(q).then(function (rows, fields) { list = []; for (x = 0; x < rows.length; x++) { list.push(rows[x]); } //console.log('Settings: ' + JSON.stringify(list, null, 4)); return list; }); }); 这里是logging的结果: Settings: […]

JavaScript for循环内的asynchronous函数

我试图从数据库中获取数据到一个jsonvariables,然后将其发送到客户端,问题是,因为我从数据库中asynchronous获取所有数据,我不知道什么时候json被正确填充。 var geojson={ "type": "FeatureCollection", "features": [] }; var routeObjects=JSON.parse(route.route); for(var i=0;i<routeObjects.length;i++){ hostelery.getInfo(routeObjects[i].ID, function(err, hostelery){ if(!err) geojson.features.push(hostelery); }); } 所以,当所有的数据在geojson中,我想把它发回客户端… 任何帮助,将不胜感激… 非常感谢你。

在同步转换asynchronous进程

我正在玩javascript和node.js,所以我试着做一个asynchronous调用同步(我知道FS的lib有readFileSync,这只是玩) 所以这里的代码,它做了一个循环,直到callback改变标志值,循环应该中断,stream程应该继续,但它挂起… var fs = require("fs"); //read a file, just something asynchronous var readfilesync = function(filename){ var getout = false, result = null, error = null; fs.readFile(filename, "utf8", function(err, data){ if (err) { error = err; } else { result = data; } getout = true; }); while (!getout) { console.log('—waiting'); } return (error)? error […]

为什么zlib.deflate(buf,callback)是asynchronous的?

当接受input缓冲区,并知道压缩是一个CPU绑定的任务,是否需要提供callback? 是否只是像callback(err, result)一样遵循惯例? Doc: http : //nodejs.org/api/zlib.html#zlib_zlib_deflate_buf_callback