Tag: callback

整洁的callbacknode.js

试图想出一个合理的方式来构build这个。 为了简单起见,我使用Node.js,Redis和Express.js创build了一个用户注册页面。 用户向页面发布详细信息。 用户名被证实是有效的,然后Redis检查用户名是唯一的。 如果是,我们继续,如果不是,我们会返回一个错误信息和所有以前的细节。 密码被确认为有效。 如果没有错误返回,我们不会继续。 电子邮件被证实是Redis独一无二的。 如果是,我们继续,如果不是,我们返回一个错误信息,并停止。 如果此时没有错误,则将数据插入到Redis中。 这似乎很简单,但使用callback已经产生了一个混乱 – 特别是当它返回一个错误。 我怎样才能以一种整洁的方式来组织这个?

从嵌套的callback而不是父函数返回值

我有一个父函数有多个callback,需要将最里面的callback的结果传递给调用这个“父”函数的函数。 由于NodeJS是asynchronous的,我的父function显然总是在callback执行之前返回。 我怎样才能使我的callback回到调用者? 我正在使用的代码示例 – var addNewUser = function(hash,name,number,time,syncTime){ // check here if the user exists or not by querying the phone number first connection.query('SELECT user_id FROM users WHERE user_phone_number ="' +number+'"',function(err,rows,fields){ if(rows[0]) return false; connection.query('INSERT INTO users (authorization_hash,user_name,user_phone_number,user_local_time,is_active,last_synced) VALUES ("'+hash+'","'+name+'","' + number+'","' +time+'","1","'+syncTime+'")',function(err,rows,fields){ if(err) throw err; return true; }); }); } 我希望能够将此callback函数返回给调用者函数。

Node.js的function与callbackdos't运行asynchronous

我试图以asynchronous的方式运行一个函数,但我总是recive结果的顺序,我打电话给他们,而不是收到最快的function。 这是一个例子。 预期的结果是打印第一个100甚至被称为最后一个。 function f1(callback){ i = 0; for (i;i< 100;i++){ } if (i == 100){ return callback(i); } } function f2(callback){ i = 0; for (i;i< 99999999999;i++){ } if (i == 99999999999){ return callback(i); } } f2(function(i){ console.log(i); }) f1(function(i){ console.log(i); });

强制x客户端等待node.js中客户端y的callback的最佳实践

我正在尝试为node.js的不同客户端实现一个数据交付工具的caching系统。 这是一个http服务,我用快递处理请求。 我的caching系统需要支持三种情况: 案例1 – 没有caching:程序通过给定的get方法接收数据。 如果成功,则写入caching。 情况2 – 有一个caching:程序接收caching。 情况3 – 没有caching,但是相同请求的get方法已经被不同的客户端调用并且正在被处理。 程序需要等待另一个请求通过get方法接收到它的数据,并传递新写入的caching。 我用事件解决了“情况3”的问题。 我为每个客户/请求组合注册一个事件。 但是注册一个开放的事件感觉不是很优雅。 排队的使用也不是最好的解决scheme之一。

node.js中的node-schedulecallback函数

所以我使用https://npmjs.org/package/node-schedule来安排一些任务,对node.js来说有些新意,我不明白为什么在定义一个函数的时候创build一个函数“in line”它没有正确的计划,它只是立即运行,然后退出。 job = schedule.scheduleJob({}, function (){console.log('one minute')}); 作品,但是 function test(){ console.log('one minute') } job = schedule.scheduleJob({}, test); 发生一次并退出。

如何在node.js中正确实现读取stream的callback逻辑?

我正在尝试在node.js中实现小型的RSS阅读器(将呈现feed数据作为html页面)。 我到目前为止已经到了这个地步: var FeedParser = require(__dirname + '/../node_modules/feedparser') , request = require(__dirname + '/../node_modules/request'); exports.news = function(req, res){ var news = []; request('http://feeds.feedburner.com/niebezpiecznik/') .pipe(new FeedParser()) .on('error', function(error) { // … }) .on('meta', function (meta) { console.log('===== %s =====', meta.title); console.log('**** %s ****', meta.description); console.log(); }) .on('readable', function() { var stream = this, item; var i […]

在node.js代码中callback参数的含义

我对Node.js非常陌生,我只是想了解这些参数如何在代码的callback方法中工作。 我只能理解第一个函数(req,res),因为我在服务器端使用了Java,但是我真的不明白它是如何自动调用memcached函数的,或者是如何启动如果有人可以向我解释这是如何工作,我会很感激。 谢谢 server.on('request', function(req, res) { //get session information from memcached memcached.getSession(req, function(session) { //get information from db db.get(session.user, function(userData) { //some other web service call ws.get(req, function(wsData) { //render page page = pageRender(req, session, userData, wsData); //output the response res.write(page); }); }); }); });

stripe:抛出errnoException(process._errno,'spawn');

我有一个代码收集用户列表: 这里是要点 当我运行我的代码时,我收到以下错误(我缺乏JavaScript技能是这里的主要问题) 我收集条纹帐户 我把计数设置为100 我收集了100个第一客户帐户 我循环3,直到所有帐户都收集(如果计数<大小(最新客户名单) child_process.js:927 throw errnoException(process._errno,'spawn'); ^错误:产卵EAGAIN at errnoException (child_process.js:980:11) at ChildProcess.spawn (child_process.js:927:11) at exports.spawn (child_process.js:715:9) at Object.exports.execFile (child_process.js:607:15) at exports.exec (child_process.js:578:18) at Object.Stripe.getClientUserAgent (/myProjectDir/node_modules/stripe/lib/stripe.js:125:5) at Object.StripeResource._request (/myProjectDir/node_modules/stripe/lib/StripeResource.js:175:18) at Object.list (/myProjectDir/node_modules/stripe/lib/StripeMethod.js:45:10) at async.series.customers (/myProjectDir/app/lib/stripeKPIs.js:26:30) at /myProjectDir/node_modules/async/lib/async.js:551:21 StripeDashboard.js var url = require('url'); var nodedump = require('nodedump').init({ expand: true }).dump; var stripeKPIs = […]

asynchronouscallback循环响应乱序

我在for循环中进行asynchronous调用,我知道响应是asynchronous的,但是我怎样才能以相同的顺序得到我的响应。 这是我的代码: setInterval(function () { callback = function (response) { var temp2 = ''; var str = ""; test = []; console.log('STATUS: ' + response.statusCode); response.setEncoding('utf8'); response.on('data', function (chunk) { str += chunk; }); response.on('end', function () { console.log("end found"); temp2 = JSON.parse(str); for (var i in temp2['build']) { test.push(temp2['build'][i]['id']); var req3 = http.request({ host: […]

Nodejs ORM2callback参数

我在for语句中创build模型: for (var j = 0; j < data.length; j++) { models.MyModel1.create({ name : data[j].name }, function(err, model){ if (err) { throw err } models.OtherMyModel.create({ model_id : model.id, index : j }], function(err,submodule){ }); }); } 所以在这里我想创build将使用父模型id和它的索引j的子模型。 而因为asynchronousvar j将data.length – 1的所有callback。 我怎样才能将索引parameter passing给模型创buildcallback?