Tag: closures

node.js中的闭包是否有所不同?

我用JavaScript工作了很多,但昨天,我开始使用node.js。 这是一个运行jslint文件夹的文件的小脚本。 对于这个例子,我改变了命令来调用ls而不是jslint 。 var sys = require("sys"); var fs = require("fs"); var cp = require('child_process'); var path = fs.realpathSync("./src/"); fs.readdir(fs.realpathSync("./src/"), function(err, files) { for (var i = 0; i < files.length; i++) { var filename = files[i]; var complete = path + filename; // Run jslint on each file var jslint = cp.exec("ls " […]

国际问题 – 翻译正在交换

我正在尝试使用nodejs / express来构build几个虚拟主机。 每个虚拟主机都有一组本地化的文件(translation.json)。 我试图创buildi18n组件的多个实例,说我们有以下网站 foo.bar.ca (canada) foo.bar.fr (france) foo.bar.cn (china) 我正在尝试这样做: var i18n = require('i18n'); app.use(i18nOrg.initMW(app, siteObj.locale, instance(i18nOrg))); ================================================================================== //Below is the i18nOrg = require('../i18nOrg') // init middleware module.exports.initMW = function(app, locale, i18nOrg) { return function(req, res, next) { i18nOrg.configure({ updateFiles: false, objectNotation: true, directory: process.cwd() + '/app/locales/' + locale, prefix: 'translation', register: global, […]

循环中的JavaScript闭包 – 一个简单实用的例子

var funcs = []; for (var i = 0; i < 3; i++) { // let's create 3 functions funcs[i] = function() { // and store them in funcs console.log("My value: " + i); // each should log its value. }; } for (var j = 0; j < 3; j++) { funcs[j](); // and […]

在unit testing中closuresNode.js http服务器

假设我有一些testingWeb服务器的unit testing。 由于我不想在这里讨论(外部范围;-))的原因,每个testing都需要一个新启动的服务器。 只要我不发送请求到服务器,一切都很好。 但是一旦我这样做,对http服务器的close函数的调用就不能按预期工作,因为所有发出的请求都会导致保持活动的连接,因此服务器在实际closures之前等待120秒。 当然,这是不能接受的运行testing。 目前,我所看到的唯一解决scheme是要么 将保持活动超时设置为0 ,所以close调用实际上会closures服务器, 或者在不同的端口上启动每个服务器,但是当你有很多testing时,这变得很难处理。 任何其他想法如何处理这种情况? PS:我有一个问如何closures一个Node.js http(s)服务器立即? 前一段时间,并find一个可行的方法来解决它,但因为看起来这个解决方法不能在任何情况下可靠地运行,因为我不时得到奇怪的结果。

如何找出什么是防止我的节点JS应用程序自然closures?

我开发了一个node.js应用程序。 然而,在某个阶段,应用程序应该自然closures。 我可以看到它通过console.log()消息到达最终指令。 但是,Netbeans告诉我它仍在运行。 尽pipe我终止了与数据库的连接,但仍有一些东西使应用程序保持活着。 我正在用尽想法。 我怎样才能找出什么阻止我的应用程序closures? UPDATE 以下是我使用的模块列表: "dependencies": { "async": "0.9", "body-parser": "1.4.3", "clean-css": "2.1.8", "cookie": "0.1.2", "cookie-parser": "1.1.0", "crypto-js": "3.1.2-3", "csurf": "1.2.0", "emailjs": "0.3.6", "express-session": "1.2.1", "express": "4.3.1", "html-minifier": "0.6.1", "markup-js": "1.5.18", "node-fs": "0.1.7", "node-fs-extra": "0.8.1", "pem": "1.4.1", "pg": "3.2.0", "readdirp": "1.0.1", "st": "0.4.1", "utils-merge": "1.0.0", "validator": "3.12.0", "yuicompressor": "2.4.8" }

http.get请求循环closures问题(节点)

我希望能够在命令行中放入一系列URL,并按照提供的顺序获取这些请求的结果。 我已经研究了闭包,以实现这一点,因为callback不会按顺序执行(更有可能是最快的响应) for (var i = 2; i < process.argv.length; i++) { (function(index) { http.get(process.argv[index], function (response) { response.pipe(bl(function (err, data) { console.log(data.toString()); })); }); })(i); } for循环参数。 然后每个迭代调用IIFE匿名函数,然后调用get请求等等。 但是问题依然存在,它被无序执行。 不按用户要求的顺序。 我究竟做错了什么?

为什么这个JavaScript函数失去封闭范围?

我在node.js中运行这个 为什么下面的代码段会丢失cb var的作用域? Client.prototype.post = function(path, data, callback) { var self = this; var cb = callback; return function() { console.log(path); console.log(cb); rest.post(self.baseUrl + path, data).on('complete', cb || this.callback); } }; 对这个函数的调用如下所示: client.post('/user', {}, function() {}); 并输出以下内容: /user undefined 我期待的第二行是[Function]返回的函数可能是执行任何js的.apply()或.apply()方法来改变它的运行范围。但我认为cb将是就像path一样。 更新:在函数中包装callback使其工作。 但是我仍然想要解释一下这里发生的事情。 var cb = function() { callback(); };

为发出的事件创build侦听器的闭包问题

我已经实现了封装与外部设备交互的驱动程序的对象。 当驱动程序收到数据时,它会发出一个事件。 当我开始时,我加载一个所有定义的驱动程序的列表。 然后我遍历定义来执行以下操作: 创build一个驱动实例, 听取司机的事件 告诉驱动程序连接。 作为发出事件的侦听器的一部分,我定义了一个函数来传递设备代表的一些细节。 但是,我的代码似乎有问题。 当一个驱动程序发出一个事件时,被触发的函数只显示一组细节。 这些细节是在for循环中定义的最后一个,我创build驱动程序并监听事件。 我创build了一个testing示例,通过使用几个简单的对象和计时器来重新创build我的问题。 这将需要在node.js中运行以查看问题。 var EventEmitter = require('events').EventEmitter; var util = require('util'); // define vehicle object function Vehicle(options) { options = options || {}; this.id = ((options.id != null) ? options.id : -1); this.name = ((options.name != null) ? options.name : 'unknown'); } util.inherits(Driver, EventEmitter); // […]

JS编译器同时编写前端和后端代码

我想编写前端和后端之间高度互动的项目。 目前,我正在使用Node.js作为后端,Google Closure作为前端和自己的Swagger类库来发布和使用基于模式的JSON服务。 我不喜欢这种方法,因为这些项目的变化是非本地的,需要大量的testing。 是否有一个JS的变体(或者,可能是一些语言翻译成JS)翻译一个来源(可能有一些@server/@client注释)既前端和后端代码?

在killall nodejs关机挂钩

我试图将一些关机function绑定到我的nodejs应用程序(版本0.8.12)。 由于我正在产生大量的subprocess并在分布式环境中工作,所以我正在通过杀死这个应用程序 var n = spawn('killall', ['node']); 问题是,显然这个on('exit', …)逻辑不再有效,事实上我有这样的东西: process.on('exit', function() { if(exit_cb) exit_cb() else console.log('About to exit.'); }); 而且,只要我杀了应用程序就不会触发。 有没有办法使用killall命令添加一个closures钩子,或者我应该find另一种方法来杀死我的subprocess,以使钩子工作? 谢谢