Tag: callback

Node.jscallback混淆

我正在尝试使用nowjs在nodejs应用程序上实现一个自动完成器。 everyone.now.sendAutocomplete = function(search) { var response = getAutocomplete(search); console.log("response"); console.log(response); }; 其中呼吁: function getAutocomplete(search) { console.log(search); var artist = new Array(); request({uri: 'http://musicbrainz.org/ws/2/artist/?query=' + search + '&limit=4', headers: "Musicbrainz Application Version 1"}, function(error, response, body) { par.parseString(body, function(err, result) { var count = result['artist-list']['@']['count']; var artists = result['artist-list']['artist']; // var artist = new Array(); […]

Node.js:for循环中每次迭代结束时的callback函数

在Node.js中,我有一个遍历整个元素列表的函数,并执行一些数据库调用,如下所示: for(var j=0; j<elements.length; j++) { //do some database calls } 每个循环完成后(意思是当数据库调用终止时),我想“console.log(”Loop terminated“);”。 在下面的代码中,我已经展示了我的尝试来解决这个问题: for(var j=0; j<elements.length; j++) { (function() { //do some database calls })(function(){ console.log("Loop terminated"); }); } 我使用了一个匿名函数,我试图callback函数,将打印“console.log(”循环终止“)”。 当我执行这个代码时,console.log不会打印任何东西。 我对Node.js很新,我不太了解callback。 有人可以向我解释为什么我的callback不起作用,我该如何解决?

节点模块在错误后调用callback参数

我正在试图通过受欢迎的LearnYouNode程序来教自己的Node。 我正在练习6,题为“ Make it Modular ”。 基本上我必须创build一个模块,然后在我的主要program.js需要它,并满足一些条件。 其中一个条件表示,如果发生错误,我必须调用callback函数,只传递错误对象并将第二个参数null 。 这是我的模块代码到目前为止: var fs = require('fs'); // require file stream module var pathMod = require('path'); // require path module var i = 0; // local variable var fileName = []; // local array variable module.exports = function (path, ext, callback) { return { process: function () { […]

将variables传入callback函数

我有这样一段代码: var guid = 'unique_guid'; con.query('SELECT guid FROM myDB.myTable WHERE guid = ?', guid, function(err, rows) { if(err) throw err; if(rows.length == 0) { console.log('new guid: ' + guid); // do more things which require guid } else { console.log('old guid: ' + guid); // do more things which require guid } } 为了避免callback地狱,我给callback函数一个名字和重构它如下: var […]

函数完成前使用callback执行callback

我会写下面的代码来练习JavaScript中的callback函数。 fs = require('fs'); function funcWithCallback(callback) { fs.readFile('YouBikeTP.txt', 'utf8', function (err,data) { if (err) { return console.log(err); } console.log(data.length); }); callback(); } funcWithCallback(function(){ console.log("string in callback ") }) 代码的目的是试图控制方法执行的顺序。 string“callback中的string”应打印文本文件的长度后打印,但是当我跑这个代码的结果是: >> "string in callback" >> 91389 //the length of YouBikeTP.txt 这不是我预期的结果。 应该 >> 91389 //the length of YouBikeTP.txt >> "string in callback" 任何人都可以告诉我为什么在funcWithCallback(callback)完成之前调用callback函数? 我误解了callback函数的含义吗?

NodeJSasynchronous – 传递参数给callback

我正在使用NodeJS设置一个刮板,我很难找出使用async.parallel传递数据的正确方法。 这里是批处理函数,它接收zip_results对象内的数组中的邮政编码列表。 我正在尝试将数组asyncTasks设置为由async运行的函数数组。 我想为每个邮政编码调用的函数是Scraper.batchOne,我想通过它一个邮政编码和工作版本。 现在,函数立即被调用。 我试图在一个匿名函数中包装调用Scraper.batchOne ,但是失去了索引variablesi的范围,并且总是以未定义的值发送。 怎样才能使函数传递给数组,以及一些参数? // zip_results: {job_version: int, zip_codes: []} Scraper.batch = function (zip_results) { //tasks – An array or object containing functions to run, each function //is passed a callback(err, result) it must call on completion with an //error err (which can be null) and an optional result value. var […]

callbackexception

我写了一个简单的NodeJS程序来执行一个shell脚本。 我分出一个孩子,并尝试执行脚本。 我已经在退出时给孩子回电了,如下所示。 但是当我尝试运行程序的时候却抛出了一个exception。 我哪里错了? var exec = require('child_process').exec; function callXmlAgent(callback) { try { var child = exec('./a.sh'); var response = { stdout: '', stderr: '', errCode: -1 }; child.stdout.on('data', function (data) { response.stdout += data; }); child.stderr.on('data', function (data) { response.stderr += data; }); child.on('close', function (errCode) { if (errCode) { response.errCode = errCode; […]

为什么Mongoose的JavaScript在同一行中有一个返回和一个callback?

我正在学习mongoose和callback。 我认为callback是用来代替回报,所以它是callback或回报,但不是两个。 然后我偶然发现了这一点,那里的return和cb在同一行。 // define a schema var animalSchema = new Schema({ name: String, type: String }); // assign a function to the "methods" object of our animalSchema animalSchema.methods.findSimilarTypes = function (cb) { return this.model('Animal').find({ type: this.type }, cb); } var Animal = mongoose.model('Animal', animalSchema); var dog = new Animal({ type: 'dog' }); dog.findSimilarTypes(function (err, […]

如何改变ES6箭头函数的“this”指向的是什么?

在traverse npm包中有这个例子 var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ]; traverse(obj).forEach(function (x) { if (x < 0) this.update(x + 128); }); 在callback函数中你可以调用this.update 。 我知道在这种情况下,你应该使用常规(不是ES6箭头)风格的函数定义,如上所示。 但出于好奇,你将如何使用ES6箭头函数语法的代码工作? 如果我尝试如下,我得到TypeError: Cannot read property 'update' of undefined因为当然this是不一样的上面。 traverse(obj).forEach((x) => { if (x < 0) this.update(x + […]

在闭包中调用父函数

我有一个非常非常困难的时间试图在一个asynchronous肥皂请求中调用一个对象函数。 基本上归结为: function Thing(request, response) { this.foo = function() { console.log("this is foo"); } this.doThing = function() { // Get SOAP args args = { foo: this.request.cookies.foo }; // From the SOAP npm package library soap.createClient(function(err, client) { client.doSomething(args, function(err, result) { // Somehow call foo(); <— CAN'T FIND A WAY TO DO THIS }); […]