Tag: asynchronous

承诺的节点模式

我有一个节点问题。 我想调用一个数据访问对象,可能还有其他的内容,一旦完成渲染一个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

asynchronousJavascript有什么大不了的?

我刚刚开始阅读更多关于asynchronous编程的内容,并会问我的推理是否正确,如果不是我误解了什么? 我的理解是,在谈论I / O时,asynchronous编程通常是相关的,这是因为I / O事件的执行是由其他执行环境(例如操作系统或数据库)处理的。 然而,我也可以运行Node.js的两个实例,例如一个需要高度响应的实例,我立刻将长时间运行的Javascript进程传递给另一个Node.js实例,其中较长的进程可以lockingsingel线程,只发送回应告诉响应服务器,执行是否正常? 创build运行asynchronousJavaScript的外部执行环境的最常见方法是启动WebWorkers以避免阻止单个三个? 编写asynchronous代码也是有可能的,例如,如果我的所有asynchronous代码都是在一个singel Node.js实例上执行,而不是转移到某个其他执行环境。 这不会给我带来正面的影响,只会导致更复杂的程序逻辑,我的代码仍然需要在相同的环境中执行? 所以最后,asynchronous编程就是避免在singel线程中执行任何东西,你只想把实际的执行传递给其他进程? 我的推理是否正确?

与asynchronousfunction混淆

请注意,当谈到Node.js时,我总是noob。 我创build了一个WebSockets应用程序,当客户端连接时(通过基本身份validation,只有授权的客户端可以联系),才会每秒发送服务器状态和用法。 我想添加磁盘使用信息的数据,并使用nodejs-disks模块。 这是我创build的function,以获得我需要的信息: function getDiskStats() { var output = { count: 0, space: { total: 0, used: 0, free: 0 } }; df.drives(function(err, drives) { df.drivesDetail(drives, function(err, data) { output.count = data.length; for(var i = 0; i < data.length; i++) { output.space.total += parseInt(data[i].total); output.space.used += parseInt(data[i].used); output.space.free += parseInt(data[i].available) } }); }); return […]