Tag: callback

Node.js – res.end和res.write可以接受一个callback函数

当用Node.js创build一个基本的HTTP服务器时,我注意到' http.ServerResponse '对象的res.write和res.end方法都可以接受一个callback函数,如下所示: require('http').createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello ', function() { console.log('here 1'); }); res.end(' World', function() { console.log('here 2'); }); }).listen(1337, '127.0.0.1'); 在浏览器中输出“Hello World”,并将'here 1'和'here 2'输出到terminal。 然而,这些callback参数没有logging在任何地方,例如http://nodejs.org/api/http.html#http_response_end_data_encoding,除非我失去了一些东西。 我真的可以使用这些callback函数吗? 我有一个有趣的用例。 或者他们是一些内部使用的东西,应该避免?

代码模式相当于链接如果/ elseif在阻塞条件在节点JS?

我想在Node.JS中写入以下同步代码的等价物: function(param) { if(condition1(param)) {f(param);} else if(condition2(param)){g(param);} else if(condition3(param)){h(param);} … } 在条件的validation可能做一些数据库,文件系统,甚至HTTP I / O; 所以不应该在这样的同步代码中运行。 简单但肮脏的解决scheme:可以像回答这个问题一样链接callback如何在Node JS中编写一个非阻塞的if语句? 但是,当条件数量很多时,很容易变得难以理解和难以修改(例如改变条件的顺序)。 有没有一个很好的模式,可以用来保持这样的代码整洁?

callback函数数组

我在做什么: function1(function(){ function2(function(){ function3(function(){ function4(); } } } 有没有更简单的方法来做到这一点? miracleFunction([function1,function2,function3,function4]); miracleFunction = function(array){ ??? }

Kue作业完成后执行callback

我已经看到这样的问题,但他们不回答我的问题。 我有一个function var kue = require('kue'); var jobs = kue.createQueue(); var create_job = function(data, callback){ jobs.create('job', { stuff: data }).save(); } 如何在jobs.process('job', function(job, done){ … )完成时callback jobs.process('job', function(job, done){ … ?

Node.jscallback函数

我是Node.js平台的新手,我尽可能地学习。 玩过callback之后,有一件事让我很困惑: 所以,我有这个function: function registerUser(body, res, UserModel){ var userJSON = { email : body.email, password : body.password, accessToken : null }; var user = null; var userAlreadyExists = false; UserModel.find({}).select('email').exec(function(err, results){ if(err){ console.log('Database error : ' + err); // send the appropriate response }else{ for(var index in results){ if(results[index].email == userJSON.email){ userAlreadyExists = true; break; […]

node.js + sequelize +顺序执行

在我的节点应用程序中,我必须执行2个查询1之后(即)我必须执行基于第一个查询结果的第二个查询。 我的代码: var levels; try { sequelize.query("Select * from levels where country_id = " + level0 + "").success(function(results) { levels = results; }).failure(function(err) { if (err) { logger.error(err.stack); throw (err); } else { if (callback) { callback(err, null); } } }); } catch (err) { } if (level == 2) { query = "select *from […]

'function foo(callback)'和'foo(arg1,arg2,function(err,data))'之间有什么区别?

我是nodejs的初学者。 我已经从nodeschool.io下载了learnyounode模块,并且正在尝试使用Make it modular练习。 在练习结束时,他们提到了这一点: 另外请记住,检查错误并在callback函数中执行早期返回是惯用的: function bar (callback) { foo(function (err, data) { if (err) return callback(err) // early return // … no error, continue doing cool things with `data` // all went well, call callback with `null` for the error argument callback(null, data) }) } 每当我试图理解callback函数,他们的forms是: foo(arg1, arg2, function(err,data){ if(err) //Handle it //Do […]

传播callback函数来捕获函数

TopicStatistics.methods.createTopicStatistics = function(callback) { // do stuff Topic.find({} , function (err, resultList) { if(err) { // do stuff if(typeof callback === "function") callback(err); // callback undefined } else { // do stuff if(typeof callback === "function") callback(null); // callback undefined } }); }; 以上是我正在执行的代码。 问题是这样的: 由于mongoose的话题是asynchronous的,所以我的函数在mongoose.find完成它的工作之前完成了,这也是正常的,也是因为这个callbackvariables被清理了,并且变成了未定义的。 我正在寻找的是一种将callback函数传播到mongoose.find函数的方法。 像这样的东西: Topic.find({} , function (err, resultList, mycallback); 这将使我能够在mongoose内部使用它,并能够在mongoose内部的操作结束时调用它。

在Node.js中用fs.readdir()列出文件时遇到麻烦

我正在通过“ 学习Node.js获得很多胜利! ”工作坊的方式工作,但我在练习5时遇到了麻烦。它要求您Create a program that prints a list of files in a given directory, filtered by the extension of the files. 我传入了包含各种JavaScript,Ruby和纯文本文件的目录,文件。 它应该是console.log()每个扩展名为.js文件。 var fs = require('fs'); function indexDirectory(directory) { fs.readdir(directory, function(err, files) { for (var i in files) { if (i.indexOf('.js') != -1) { console.log(files[i]); } } }); } indexDirectory('files'); 我当前的代码不会输出任何东西,当我运行node program.js 。 […]

如何使一个适当的Node.js错误callback?

我试图做一个适当的asynchronous函数,其中包含一个callback,但显然我这样做的方式是行不通的。 这是我的代码: var fs = require('fs'); var path = require('path'); var tmp = 0; var i = 0; function getFilesByExtArgs(dir, ext, function(err)){ if (err){ console.log("Error: " + err.code + " (" + err.message + ")"); return; } else{ fs.readdir(dir, function (err, data){ while (i <= data.length){ if (path.extname(data[i]) == ('.' + ext)) console.log(data[i]); i++; } […]