Tag: asynchronous

node.js和一个在getInstance中具有asynchronous调用的单例

我已经实施了一个单例,遵循由Addy Osmani的书“学习Javascriptdevise模式”所描述的模型。 这个单身人士正在build立一个肥皂连接。 这是一个asynchronous调用,我想要在getInstance调用中执行,所以后续调用可以保证有完全连接的连接… 我以为我的想法是将callback传递给getInstance,在我的main.js函数中调用该调用,并在其他脚本需要连接时启动该调用。 和soap连接的其他每个消费者都将它传递给null。 这是一个黑客或一个很好的方法来做到这一点? 如果这不是一个标准的做法,你有什么build议?

Node.js Async | 从api插入postgresql数据库结果

我是node.js的新手。 我想实现的是以下几点: 连接到我的postgresql数据库,并获得一个地方(id,坐标)的信息。 调用天气api并使用上一步获得的坐标获取该点的信息。 将返回的json插入到数据库中。 我得到8小时的对象,每3小时的天气信息(0,3,6,9,12,15,18,21)。 我需要遍历这些对象,并将它们存储在数据库中的8条logging中。 我写了下面的代码: app.get('/getapi', function(req, res){ var json_bbdd; //———— BBDD CONNECTION—————- var pg = require('pg'); var conString = "postgres://postgres:postgres2@localhost/places"; var client = new pg.Client(conString); client.connect(function(err) { if(err) { console.log('could not connect to postgres'); } client.query('SELECT * from places where id=3276', function(err, result) { if(err) { console.log('error running query'); } json_bbdd=result.rows[0]; […]

Node js async.series无法使用Express应用程序 – 响应发生得太快

我有一个Node js Express应用程序,我从许多不同的地方(服务器,Twitter,另一个数据库等)设置cookie。 这些都需要串联。 为了避免callback噩梦,我试图使用Async.js。 但是,在async.series调用完成之前,响应会一直发送。 我怎样才能确保async.series完成,然后调用res.redirect? 使用asynchronous调用模块 // OTHER CODE accountCookies(req, res, next); // THE MODULE WITH ASYNC res.redirect(302, 'https://' + req.host + '/account'); asynchronous模块 module.exports = function (req, res, next) { req.appVariables.error = null; // Required modules var async = require(__dirname + '/utilities—–async.js'); // Utility for controlling node's asynchronous behavior var userSessionObject = […]

使用async.parallel处理数组

我有两个单独的数组,我需要处理。 由于他们不是依赖,我想这样做asynchronous。 这是我的代码: cats = ['snowball', 'berlioz', 'garfield', 'lucifer']; tigers = ['shere khan', 'hobbes', 'rajah']; async.parallel({ cats: async.apply(cats.forEach(function(item){ if(item == 'garfield') console.log('hide your lasagna'); else console.log('all safe'); })), tigers: async.apply(tigers.map(function(item){ if(item == 'hobbes') return 'eats tuna'; else return 'eats people'; })) }, function(error, results){ if(error) console.log(error); return; meals = JSON.parse(results['tigers']); console.log('tiger meals: '+meals); }); 这是我得到的错误: […]

asynchronous加载NPM模块

我试图创build一个连接到我的数据库(couchDB使用摇篮)的模块。 最后,模块输出“db”variables。 这里是代码: var cradle = require('cradle'), config = require('./config.js'); var db = new(cradle.Connection)(config.couchURL, config.couchPort, { auth: { username: config.couchUsername, password: config.couchPassword }, cache: true, retries: 3, retryTimeout: 30 * 1000 }).database('goblin'); //database name //Check if DB exists db.exists(function (err, exists) { if (err && exists) { console.log("There has been an error finding your CouchDB. […]

Node.js从callback函数中提取值

我有一个服务器文件与开关使用URL来显示适当的内容。 其中一种情况是/用户应该显示某个表的JSONstring。 这是从一个MySQL文件返回。 server.js var http = require('http') var url = require('url') var port = 8080 function onRequest(request, response) { var pathname = url.parse(request.url).pathname console.log('Request for ' + pathname + ' received.') response.writeHead(200, {'Content-Type': 'text/html'}) response.write(run(pathname)) response.end() } function run(pathname) { switch(pathname) { case '/': response = 'Welcome to my little test' break case '/time': […]

Node.jsasynchronousif语句GraphicsMagick

我正在尝试在我的Node.js应用程序中使用GraphicsMagick库来即时处理图像。 在图像被select后使用: var image = gm('/path/to/image.jpg'); 我想对它执行几个操作。 我面临的问题是因为要执行的行为来自variables。 例如,如果模糊是真的,它应该模糊图像。 如果比例也是如此,那么模糊的图像应该被缩放。 麻烦的是,GraphicsMagic库是asynchronous的,所以这个脚本会导致许多动作同时执行,这可能会变成可怕的。 这些函数确实接受callback,如GitHub上的示例所示。 尽pipe它们看上去是同步的,但是这里的答案证实它们是asynchronous的。 这里的新答案表明这些函数是同步的。 当我不知道正在执行哪些操作时,如何一个一个地执行图像上的操作,同时保持非阻塞状态? 我正在思考沿着NextAction()函数的行,这将在callback中执行。 NextAction()然后会触发下一个动作,但我不知道如何去做这件事。 我已经研究过StratifiedJS,但决定不这样做,因为我不想让我的应用程序进一步复杂化,我不认为我的PaaS支持它。 if(blur){ image = image.blur(blur1, blur2); } if(scale){ image = image.resize(resizeX, resizeY); } if(sepia){ image = image.sepia(); }

如何使用基于索引的参数创build一个函数数组

我有一组函数,它们通过async.series()函数运行,这些函数将参数作为参数存储在一个数组中。 params = [ {id: 1, name: "Two tires fly. Two wail."}, {id: 2, name: "Snow-Balls have flown their Arcs"}, {id: 3, name: "A beginning is the time for taking the most delicate care"} ]; async.series( [ function(callback) { myFunction(callback, params[0]); }, function(callback) { myFunction(callback, params[1]); }, function(callback) { myFunction(callback, params[2]); }, ]); 显然,数组要大得多,将它们包装成一个循环会很方便: var […]

在下面的控制stream中使用响应之前,如何等待节点/快速应用程序中mongo findOne查询的响应

我是新来的节点,也是JavaScript的callback。 我试图检查一个帐户是否存在在mongo中,然后'保存',如果没有,并返回一个错误,如果是的话。 我目前正在试图找出我的快速应用程序之外。 这是我的.. var MongoClient = require('mongodb')。MongoClient; MongoClient.connect('mongodb://localhost:27017/main', function (err, db) { if(err) throw err; var query = { name : "www.website.com"} findOne(db, query, function (doc) { if(doc) { console.log('account exists'); } else { console.log('good to go'); } console.dir(doc); }); }); var findOne = function (db, query, callback) { db.collection('accounts').findOne(query, function (err, doc) { […]

JS是绑定一个obj的状态还是保持对obj的引用?

我的问题是,绑定到一个asynchronous函数的数组似乎并没有更新后续调用该函数,即使bind'ed数组在该函数内更新。 在下面的函数中,我asynchronous调用queryForData几次。 传入全球宣布的历史。 LOG1总是打印出一个空数组,而LOG2总是打印出一个数组,这个迭代是用正确的数据检索的。 但是,它似乎没有连接在其他调用中检索的数组。 请帮忙 exports.callQuery = function(req, res) { var http = require('http'); var history = []; // loop over all entries in "Stocks" collection // and call queryForData Stocks.find(function (err, stocks){ stocks.forEach(function callback(entry){ queryForData(entry, this.history); }.bind({history : history}) ); }); // perform an HTTP request for data and call the callback // […]