Tag: callback

将附加parameter passing给Javascriptcallback函数

我需要在Node.JS应用程序中观察less量的目录: function updated(event, filename){ log("CHANGED\t/share/channels/" + filename); } for(i in channels) fs.watch('share/channels/' + channels[i], {persistent: false}, updated); 问题是,fs.watch只传递文件名到callback函数,而不包括它所在的目录。有没有办法,我可以以某种方式传递给更新()函数的额外参数,所以它知道文件在哪里? 我想我正在寻找类似于Python的functools.partial东西,如果有帮助的话。

护照Facebookvalidationcallback没有被调用

我正在做一个节点的应用程序,当我尝试使用与Facebook的护照,validationcallback不运行(没有logging)。 任何帮助,将不胜感激。 var express = require('express'); var routes = require('./routes/routes.js'); var layout = require('./routes/layout.js'); var facebook = require('./routes/facebook.js'); var editprof = require('./routes/editprof.js'); var app = express(); var vogels = require('vogels'); var passport = require('passport'); var FacebookStrategy = require('passport-facebook').Strategy; var configAuth = require('./config/auth'); app.use(passport.initialize()); app.use(passport.session()); … passport.use(new FacebookStrategy({ // pull in our app id and secret […]

节点Gruntasynchronous任务循环与闭合不起作用

预先感谢您看看这个。 我有一个循环中的asynchronous任务不工作。 我已经确定: 将我的循环variables“key”封装在闭包中,以避免经典的“仅限最后一个值”的问题,循环在asynchronous任务返回一个值之前完成很长时间,只显示最后一个值。 调用完成(错误)完成我的asynchronous任务(根据Gruntjs常见问题解答) 使用hasOwnProperty()来确保键是对象的实际属性,而不是来自原型。 遵循node.exec例子的格式,除了把exec的值赋给一个variables – 我试过了,但是没有帮助。 见下面的第一个参考。 这个函数输出…什么都没有! 出于某种原因,grunt.log.writeln语句甚至没有发射。 任务完成没有错误。 我还尝试添加20秒的延迟,以防脚本在asynchronous任务返回之前完成。 奇怪的是,如果我不叫“完成(错误),”文件被写入文件(当我用grunt.file.write语句replacewriteln的)。 var done = this.async(), exec = require('child_process').exec, myJSON = { "file1" : "C:/home/me/jquery.js", "file2 " : "C:/home/me/grunt.js", … "fileN" : "C:/home/me/N.js" }, count; for (var key in myJSON) { if (myJSON.hasOwnProperty(key)) { (function (key) { exec( 'type "' + myJSON[key] […]

我知道callback函数asynchronous运行,但为什么?

哪一部分的语法提供了这个函数应该在其他线程中运行并且是非阻塞的信息? 让我们考虑node.js中的简单asynchronousI / O var fs = require('fs'); var path = process.argv[2]; fs.readFile(path, 'utf8', function(err,data) { var lines = data.split('\n'); console.log(lines.length-1); }); 究竟是什么使得它发生在后台? 任何人都可以解释它精确或粘贴到一些好的资源的链接? 我看到的地方有很多关于callback是什么的信息,但没有人解释为什么它实际上是这样的。 这不是关于node.js的具体问题,而是关于每种编程语言中callback的一般概念。 编辑: 可能我提供的例子在这里不是最好的。 所以我们不要考虑这个node.js代码片段。 我一般问 – 什么使程序在遇到callback函数时继续执行的技巧。 callback概念是一个非阻塞的语法是什么? 提前致谢!

JavaScript函数返回节点js中未定义的值

我正在编写获取数据的代码。 首先我调用getsomedata函数来获取数据,并在里面getsomedata函数我打电话给另一个函数getRandomdata获取数据并返回到前一个函数,但它是返回undefined。 但在getRandomdata数据越来越。 在某处谈论使用callback。 我是新来的JavaScript。 请帮忙。 我的代码看起来像。 router.get('/get-data', function(req, res, next) { var result = getsomedata( some_parameter ); console.log(result); // recieving undefined res.send( result ); }); function getsomedata( some_parameter_recieved ) { var getsomedata = getRandomdata( random_params ); console.log (getsomedata); // recieving undefined return getsomedata; } function getRandomdata( random_params_recieved ) { // after some calculation console.log(random_data); […]

node.js:while循环callback没有按预期工作

知道,虽然Node.js是asynchronous工作,写这样的事情: function sleep() { var stop = new Date().getTime(); while(new Date().getTime < stop + 15000) { ; } } sleep(); console.log("done"); …将调用sleep(),在while循环(15secs)期间阻塞服务器,然后将“完成”打印到控制台。 据我所知,这是因为Node.js只允许JavaScript的主线程访问,因此这个事情的孩子会停止进一步的执行。 所以我明白这个解决scheme是使用callback: function sleep(callback) { var stop = new Date().getTime(); while(new Date().getTime() < stop + 15000) { ; } callback(); } sleep(function() { console.log("done sleeping"); }); console.log("DONE"); 所以我认为这将打印“完成”,并在15秒后。 'done sleeping',因为sleep()函数被调用并被传递给一个callback函数的指针。 当这个函数正在工作(while循环)时,最后一行将被执行(print'done')。 15秒后,当sleep()函数完成时,它调用给定的callback函数,然后打印“完成睡眠”。 显然我在这里明白了一些错误,因为上述两种方式都阻止了。 […]

如何将parameter passing给nodejs中的mysql查询callback

我试图找出正确的方式传递自定义数据的查询调用在callback中可用。 我在nodejs(所有最新版本)中使用MySQL库。 我有一个调用connection.query(SQL,function(错误,结果){…}); 我无法find一种方法来1)传递自定义数据/参数的调用,以便2)它可以使callback被调用时可用。 那么这样做的正确方法是什么? 我有以下(伪代码): … for (ix in SomeJSONArray) { sql = "SELECT (1) FROM someTable WHERE someColumn = " + SomeJSONArray[ix].id; connection.query(sql, function (err, result) { … var y = SomeJSONArray[ix].id; }; } 从上面的代码中,我需要能够将查询中使用的“ix”的当前值传递给callback本身。 我怎么做?

在node.js中捕获console.log?

有没有一种方法可以捕获由node.js中的console.log(…)引起的最终控制台输出,以防止在unit testing模块时阻塞terminal? 谢谢

asynchronous队列,文件stream结束时如何知道两者何时完成

使用async.queue与文件stream时,我遇到一个小问题 我有一个场景,我的文件stream将完成 我将fileRead设置为true 然而队列将是空的并且已经被称为排水 这导致我的“完成”永远不会被调用 我的文件stream是“结束”和队列是空的后,说“结束队列”的正确方法是什么? var fs = require('fs') , util = require('util') , stream = require('stream') , es = require('event-stream'); var async = require('async'); var fileRead = false; var lineNr = 0; var q = async.queue(function(task, callback) { task(function(err, lineData){ responseLines.push(lineData); callback(); }); }, 5); var q.drain = function() { if(fileRead){ done(null, responseLines); […]

NodeJS获取asynchronous返回值(callback)

我已经阅读了有关callback的互联网,但我无法理解他们在我的情况。 我有这个function,它运行时logging到控制台。 不过,我现在需要在另一个function这个反应,我正在努力这样做。 var asyncJobInfo = function(jobID, next) { var oozie = oozieNode.createClient({ config: config }); var command = 'job/' + jobID + '?show=info'; console.log("running oozie command: " + command); oozie.get(command, function(error, response) { console.log("*****response would dump to console here:*****"); // console.log(response); return response; }); }; 这是我应该得到它的地方:(这显然不起作用,因为它不等待响应。) exports.getJobInfoByID = function(req, res) { var jobIDParam = […]