Tag: 作用域

javascript和node.js中的多个请求之间的本地variables

我用javascript和node.js编写了这个脚本,它使用node.js进度和请求( https://github.com/request/request )包来下载一堆文件。 多个请求正在被解雇。 我的问题是,如果在on('response',function)中定义的variables“bar”和“chunks”的variables范围对于该事件是本地的,并且在其内部是on('data')事件/有可能多个获取请求正在更新相同的进度条。 我想我因为node.js和javascript的asynchronous/事件驱动性质而感到困惑。 基本上这是代码: var i; var request = require('request').defaults({jar:true}); var ProgressBar = require('progress'); var fs = require('fs'); for (i in links){ var link = links[i]; request.get(link).on('response',function(response){ var disp = response.headers['content-disposition']; var filename = disp.substring(disp.indexOf('filename="')+'filename="'.length,disp.length-1) var chunks = []; var len = parseInt(response.headers['content-length'], 10); var bar = new ProgressBar(' downloading [:bar] :percent […]

全局variables作用域在Node.js控制台中无法识别

所以在浏览器(铬),如果我在js控制台运行这个代码,函数调用foo(); 打印到控制台的数字2.但是,如果我在node.js中运行它,函数调用foo()打印未定义 。 这是为什么? 节点是否以“严格模式”自动运行代码? function foo() { console.log(this.a); } var a = 2; foo();

在承诺之外返回一个承诺variables

我需要从承诺之外得到一个variables的价值,但是我不能因为这个范围的原因。 在我的情况下,我使用Sequelize将数据保存到SQL数据库,但我想做类和dataToReturn我收到第二次save后的承诺 .post('/', (req, res) => { const event = new Event(Events, Data, req.body) event.save() res.status(201).json("HERE I NEED THE 'dataToReturn' from the promise") }) 这是我的课堂活动 class Event { constructor(Events, Data, Event) { this._Data = Data, this._Events = Events this._Event = Event } save() { this._Data.build(this._Event.Data).save().then((res) => this._Events.build({ name: this._Event.name, date: this._Evento.fecha, photo1: this._Event.photo1, photo2: this._Event.photo2, […]

JavaScript和Node.JS – 无法理解为什么variables在callback中是未定义的

所以我开始学习NodeJS,并创build一个简单的HTTP服务器,如“Node Beginner”中所述。 我有一个Router对象,它包含一个路由table ,它将path名映射到要调用的函数。 这是通过一个关键值对象来实现的。 现在,我的Server对象有一个指向上述对象的router成员。 (对于松耦合,保持路由器和服务器分离),以及start()服务器的start()方法。 如下所示: Server.prototype.start = function() { var myRouter = this.router; http.createServer(function(req, res) { var path = url.parse(req.url).pathname; res.write(myRouter.route(path, null)); res.end(); }).listen(80); }; 现在我创build了一个myRoutervariables,它指向Server对象的router引用,然后在createServer函数中使用它的route()函数执行路由。 此代码工作。 但是,如果我省略创buildmyRoutervariables部分,并直接在createServer执行路由,如下所示: res.write(this.router.route(path, null)); 它说this.router是不确定的。 我知道这与范围有关,因为提供给createServer的函数稍后在接收到请求时执行,但是,我无法理解创buildmyRouter如何解决此问题。 任何帮助将不胜感激。

无法将函数的结果传递给node.js中的全局作用域

我正在使用image-scraper包的node.js来search与给定searchstring相关的图像。 该包会正确返回结果数组。 我试图将该数组的一个元素(图像的url)传递给一个variables,我可以通过全局范围在另一个包中使用该variables。 这是我的代码: var Scraper = require ('images-scraper') , bing = new Scraper.Bing(); bing.list({ keyword: 'search string here', num: 1, detail: true }) .then(function (res) { console.log('url of image result', res[0]['url']); global.url_result = res[0]['url']; }).catch(function(err) { console.log('err',err); }) console.log('array',global.url_result); 该软件包的工作原理 – 控制台在被告知将其打印到函数中的控制台时,将返回res[0]['url']图像的URL,但是该函数之外的控制台日志会返回未定义的global.url_result 。 有关如何在函数之外实现对结果的访问的任何build议? 如果我不应该使用全球范围,最好的办法是什么? 提前致谢。

改变函数的variables,并保持它的JavaScript?

我如何写这个,让lfmuser保持在UserModel.find()调用的函数中所做的更改? 如果我可以避免的话,我真的不需要将非常大的一段代码移动到每个块中。 var np_handler = function (act) { var lfmuser = ''; if (act.params.length === 0) { UserModel.find({ nick: act.nick }, function (err, data) { if (!data) { lfmuser = act.nick; } else { lfmuser = data.lastfm; } }); } else { UserModel.find({ nick: act.params[0] }, function (err, data) { if (!data) { lfmuser = […]

失去全球variables价值

这是一个游戏应用程序,我声明的variablesskipnpc被devise为一个非玩家angular色已经使用轮到他的行为的任何AI代码跳过一段时间的指标。 我有的问题是我失去skipnpc的价值不知何故,我指出在console.log命令我的问题是关系到可变范围,但我不明白如何解决它。 function npcMovement() { skipnpc = false;… sql4 = "SELECT id FROM game_moblist WHERE spawn_id =" + spawnid + " AND posx=" + parseInt(mobpathx[mobpathx.length – 1]) + " AND posy=" + parseInt(mobpathy[mobpathy.length – 1]) connection.query(sql4, function (err, send, fields) { console.log("skipnpc pathing") io.sockets.emit('groupmoveresult', send, parseInt(mobpathx[mobpathx.length – 1]), parseInt(mobpathy[mobpathy.length – 1])) skipnpc = true console.log("skipnpc=true:" […]

函数不返回值:范围问题

需要第二双眼睛…发现有什么不对吗? 我的内在函数不返回值。 我一定在搞范围了吗? function getGroups(account){ var name; // name = 'assigned'; I work account.getGroups(function(err, groups) { //removed logic for simple debugging name ='test'; //return name; }); return name; } 当在父函数中分配variables,即var name = 'assigned'它可以工作。

将节点模块variables注入到作用域

是否有可能使用节点模块来实现这种行为? module.js: module.exports = function () { var test.fn = function () { console.log("$test.fn()"); } var test.fn2 = function () { console.log("$test.fn2()"); } var variable = "test"; }; app.js: require("./module.js")(); test.fn(); test.fn2(); otherFunction(variable); 我不想做这样的事情$ = require("./module.js")(); $.test.fn(); $ = require("./module.js")(); $.test.fn(); 我想注入这个variables到app.js作用域没有包装variables。 编辑: 我已经结束了使用这个: module.js: module.exports = function () { eval(String(inject)); var inject = ( […]

NodeJS:代码优化和variables范围

真正新到纯JavaScript编程,我只是想知道如何优化下面的冗余代码: module.exports = function(app, express) { var router = express.Router(); router.get('/', function (req, res, next) { var db = req.db; var collection = db.get('projects'); var projects = collection.find({}, {}, function(e, docs){ res.json({ success: true, message : 'ok', projects: docs }); }); }); router.get('/:id', function (req, res, next) { var db = req.db; var collection = […]