Articles of asynchronous

Node.js中的asynchronous或步骤

我无法让我的asynchronous代码与node.js一起工作 尝试asynchronous和步骤库 – 代码只返回第一个函数(似乎没有通过rest)。 我究竟做错了什么? 谢谢! var step = require('step'); step( function f1(){ console.log('test1'); }, function f2(){ console.log('test2'); }, function finalize(err) { if (err) { console.log(err);return;} console.log('done with no problem'); } ); 或这个: var async = require('async'); async.series([ function f1(){ console.log('test1'); }, function f2(){ console.log('test2'); }, function finalize(err) { if (err) { console.log(err);return;} console.log('done with […]

node.js多个http请求

我是节点和js的新手,并尝试创build一个网站的快递,使三个Rest API调用之前呈现的页面。 目前我有下面,它返回一些JSON我转换成对象的列表。 其中一些属性只返回id值,我想运行三个API请求,返回这些Id的查找,以便我可以将这些数据作为有意义的值呈现给用户。 我可以通过运行下一个API调用来实现这一点,我正在渲染索引页,但是看起来非常混乱。 我看到的所有asynchronous教程都混淆了我的新手思维方式。 有人可以发布一个简单的例子,以反映下面的结构的asynchronous吗? var issues_json = ""; var request = http.request(options, function(response) { console.log("statusCode: ", res.statusCode); console.log("headers: ", res.headers); response.on("data", function(data) { issues_json += data; }); response.on("end", function() { console.log(issues_json); var column_obj = JSON.parse(issues_json); res.render('index', { title: 'List of Issues', response: issues_json, objects: column_obj }); }); response.on("error", function(e) { console.log(e.Message); res.render('index', […]

Q承诺中的并发限制 – 节点

有什么方法来限制使用Q promise库的promise的并发性吗? 这个问题有点相关我怎样才能限制Q promise的并发性? 但问题是,我试图做这样的事情: for (var i = 0; i <= 1000; i++) { return Q.all([ task1(i), task2(i) ]); // <– limit this to 2 at a time. } 真正的用例是: 从数据库提取post 在数据库中像posts.forEach(function(post) {} 对于每个职位做任务1,任务2,任务3(检索社交计数器,检索评论计数等) 在数据库中保存新的发布数据。 但问题是节点正在同时执行所有文章的所有任务,例如同时向Facebook发送500个post的“点数”。 如何限制Q.all()所以一次只有2个职位正在执行他们的任务? 或者还有其他可行的解决scheme可以应用 注:大多数任务(如果不是全部)依赖于请求库

节点asynchronous路由代码

我使用快车4.0使用节点。 在互联网上(包括文档),我找不到在路由中embeddedasynchronous代码的任何东西。 使用中间件很简单: app.use('/something', function (req, res, next) { doSomethingAsync(function(err, probablySomethingElse) { // probably some error checking next(); }); }); 路线上的问题是没有nextcallback,那么如何expression知道何时移动到下一个工作? app.get('/something', function (req, res) { res.render('someTemplate'); // no next() here, but it still works }); 如果我不得不猜测,我会说,在上述函数退出后,快速移动到下一个任务。 但出于好奇,我已经推出了以下代码… app.get('/something', function (req, res, next) { console.log(next); }); …实际上有一些nextcallback通过。 那么这里发生了什么? 它在幕后如何工作? 我怎样才能把asynchronous代码呢?

unit testing事件驱动的JavaScript

我在用node.js编写一个服务器端应用程序,并希望包含unit testing。 我正在努力的一件事是unit testingEventEmitter和setInterval/setTimout的好方法 我有什么selectunit testingasynchronous服务器端JavaScript? 我知道我可以将另一个侦听器附加到作为testingfunction的EventEmitter,但是我怎样才能让testing函数运行? 部分unit testing是为了确保unit testing的每个部分都运行。 我可以自己使用setTimeout,但这似乎是一个黑客的解决scheme。 如果这有帮助,那么我试图testing一些exampler代码。 … function init(param) { … // run update entities periodically setInterval(this._updateEntities.bind(this, param.containerFull), 1000 / param.fps); … } … EntityUpdater.prototype = { … "_updateEntities": function updateEntitiesfunc(fn) { this._tickEmitter.emit( "tick", new dataContainer.DataContainer(this.getEntityCount()) .on( "full", fn.bind(this) ) ); }, … } … (发射会触发一个事件) [编辑] 我开始阅读一些EvevntEmittertestinghttps://github.com/ry/node/tree/master/test/simple ,这有助于我看到如何去做这件事。

Node + Sequelize:如何在添加之前检查项目是否存在? (asynchronous混淆)

不幸的是,对于节点的asynchronous/同步执行,我对节点很陌生。 我正在使用节点,与sqlite和async.js sequelize。 我有一系列的Articles ,每个Articles都有一些Authors 。 对于每篇Article每位Authors ,我想检查Author存在。 如果没有,创build它。 问题是,在最初运行时,重复作者正在创build,我认为由于asynchronousfunction导致检查存在的问题。 例如,用数组: authors = ['A. Test', 'B. Test', 'C. Test', 'A. Test'] authors = ['A. Test', 'B. Test', 'C. Test', 'A. Test'] 和代码: async.each(authors, function(item, callback){ Author.sync().then(function(){ Author.count({ where: {name: item.trim()} }).then(function(count){ if (count != 0) { console.log('Author already exists') } else { console.log('Creating author…') Author.create({ […]

当所有的任务完成后,async.parallel仍然会调用最后的callback函数,如果其中任何一个得到错误?

var async = require('async'); async.parallel([ function(cb) { cb(true); }, function(cb) { cb(null, true); }], function(error, results) { } ); 在代码中,如果第一个任务在第二个任务之前运行cb(true),第二个任务是否仍然运行? 如果是这样,完成后,主callback仍然会被调用?

asynchronous或同步bcrypt函数使用node.js为了生成哈希?

我目前正在尝试在node.js中为我的项目制作身份validation模块? 我已经看到了一些使用bcrypt生成哈希的例子 https://github.com/bnoguchi/mongoose-auth/blob/master/lib/modules/password/plugin.js https://github.com/Turbo87/locomotive-passport-boilerplate/blob/master/app/models /account.js 但是,由于某些原因,他们正在使用bcrypt.hashSync()函数。 由于bcrypt是很好的,因为它很费时,为了不阻止代码,使用asynchronous函数不是更明智吗,即: User.virtual('password') .get( function () { return this.hash; }) .set( function (password) { bcrypt.hash('password', 10, function(err, hash) { this.hash = hash; }); }); 你能解释一下我哪个更好,为什么? 谢谢!

Nodejs的callback机制 – 哪个线程处理callback?

我是nodeJS的新手,想知道Node的单实例模型。 在一个简单的nodeJs应用程序中,当某些阻塞操作与callbackasynchronous处理时,运行nodeJs的主线程是否也处理callback? 如果请求是从数据库中获取一些数据,并且有100个并发用户,并且每个db操作需要几秒钟,当最后触发(对于每个连接)callback时,接受这些请求的主线程用于执行callback以及? 如果是这样,nodeJs如何扩展,它如何快速响应?

Node.js和Express:如何在asynchronous操作之后返回响应

我是Node.js的新手,所以我仍然围绕着asynchronous函数和callback。 我现在正在努力的是如何在asynchronous操作中读取文件中的数据之后返回响应。 我的理解是,发送回应是这样的(这对我有用): app.get('/search', function (req, res) { res.send("request received"); }); 但是,现在我想读取一个文件,对数据执行一些操作,然后返回结果作为响应。 如果我想对数据执行的操作很简单,我可以这样做 – 执行它们的内联,并保持对res对象的访问,因为它仍然在范围内。 app.get('/search', function (req, res) { fs.readFile("data.txt", function(err, data) { result = process(data.toString()); res.send(result); }); }); 但是,我需要执行的文件操作很长,也很复杂,我已经将它们分离到各自的函数中,并放在单独的文件中。 结果,我的代码看起来更像这样: app.get('/search', function (req, res) { searcher.do_search(res.query); // ??? Now what ??? }); 我需要调用res.send才能发送结果。 不过,我不能直接在上面的函数中调用它,因为do_searchasynchronous完成的。 而且我不能在callback到do_search调用它,因为res对象不在那里。 有人可以帮我理解在Node.js中处理这个问题的正确方法吗?