Tag: asynchronous

用node.jsasynchronous完成任务列表的最快方法是什么?

我有一个fs.writeFile png作业的数组已经被删除像这样 canvas.toDataURL().replace(/^data:image\/\w+;base64,/,"") 这样的作业数组 jobs=[['location0/file0'],['location1/file1'],['location2/file2'],['location3/file3']]; 我刚开始使用asynchronous,正在看他们的文档,有很多方法 队列看起来有趣和平行.. 现在我像这样处理我的工作(在一个async.waterfall) function(callback){//part of waterfall (function fswritefile(){ if(jobs.length!==0){ var job=jobs.shift(); fs.writeFile(job[0],(new Buffer(job[1],'base64')),function(e){if(e){console.log(e);}else{fswritefile();}}) } else{callback();} })(); },//end of waterfall part 使用这个模块可以更有效率吗?

Node JS如何pipe理全局variables,因为他是单线程和asynchronous的?

我试图用NodeJs开发一个API,它接受一个包含多个查询的对象到mongdb,并用不同的结果(实际上是Json)来回答一个对象。 我使用快递,我的代码是: var nb_query=0; var results; //api app.get("/api/:p",api); function api(req, res) { var jsonq=decodeURIComponent(req.params.p); //console.log(jsonq); var queries=JSON.parse(jsonq); nb_query=Object.keys(queries).length; results={}; for(var nq in queries) { // for each query do_find_query(nq,queries[nq], function() { //todo : managing head res.end(JSON.stringify(results)); } ); } } // end of api function function do_find_query (name_query,query,callback) { var collection=fdb.collection(query.collection); collection.find(query.find,query.fields,query.options).toArray(function(err,docs) { if(err) throw […]

如何debugging什么使NodeJS进程保持活着

我有一些严重的asynchronous操作运行,但是NodeJS进程在所有操作完成时都不会退出。 我可以以某种方式找出什么使它运行? 我可以看到堆栈正在运行的进程吗? 或者你可以给我提示,这种怠速最常见的原因是什么? 我没有任何一种服务器运行在那里,但我使用async.nextTick相当广泛,基本上使用setImmediate 。 我不知道这是否可以卡住。 也没有任何types的数据库或远程服务器的连接。 这只是一些文件系统上的工作。 也许有一些recursion循环,但我已经试过使用节点检查器,并暂停执行后,它被卡住,它并没有显示我在代码将挂起任何点。

在nodejs(asynchronous)循环和callback中寻找适当的模式

我已经阅读了几篇文章和文章,但是我不太明白。 我在Mongoose模型中有一段代码,主要负责邀请人们参与项目。 鉴于一些被邀请者,我期待看看他们是否在数据库中,如果没有,我会继续创build它们并更新被邀请者列表中的ID。 jslint抱怨循环,我正在努力与callback(和正确的总体模式,当你有一个循环,与数据库保存callback。显然我想要发生的是循环完全完成,任何新用户都添加到数据库,ID是在原始哈希(受邀者)更新,然后callback发生。 ProjectSchema.methods.invite = function invite(invitees, callback) { var User = mongoose.model('User'); var emails = _.pluck(invitees, 'email'); // loop through invited hash to see if we already have those users in the db User.find({ 'email': { $in: emails}}, function (err, users) { for (var invited = 0; invited < invitees.length; invited++) { var […]

async.series函数没有完成

我正面临一个奇怪的问题与async.js 。 我正在解释整个场景。 我在数据库中有两个表。 让一个是5行,另一个是2840行的Y 由于我的项目在sails.js我使用waterline作为ORM。 我在async.series运行三个函数。 第一个用于获取表X所有行,第二个用于获取表Y所有行。 在第三个函数中,我运行async.eachSeries遍历所有在第二个函数中获取的Y行,并调用一个外部的POST API。 所以整体stream程是, async.series([ function( callback1 ){ // Fetch all rows from `X` }, function( callback1 ){ // Fetch all rows from `Y` }, function( callback1 ){ async.eachSeries(allRowsOfY, function(item, callback2){ // Call an external POST api. }, function(err){ }); }, ], function( err ){ // Do something […]

我什么时候可以使用async.eachLimit而不是async.eachSeries

我正在阅读一个nodejs脚本,当我碰到这行代码: async.eachLimit(games, 1, handleSingleGame, callback) 我的问题是以前的电话和以下电话有什么区别: async.eachSeries(games, handleSingleGame, callback) 我真的很困惑! 任何帮助表示赞赏。

节点 – 周期内的等待请求响应

真的,我尝试了所有的方法,但是我找不到解决scheme。 由于没有英文,我正在使用谷歌翻译,我会连续多次解释相同的东西。 1º尝试For循环将等待所有内容完成 2º我试图知道,外部networking请求的城市正在行动。 就像很多城市一样,一旦我检查了第一个城市,我就需要打破这个循环。 3º我需要去一个JSON,并在运行时执行一个动作,等待它完成后。 然后随时离开周期。 我已经testing了几个代码,但为了更好的理解,在这里介绍。 ——————————————————————— var city = [ {'city':'madrid'}, {'city':'barcelona'}, {'city':'valencia'}, {'city':'malaga'} ]; var vBreak = 0; for (i in city){ request('example.there-city.com/' + city[i].city ,function (error, response, read) { if (read == 'OK') { vBreak = 1} }); if (vBreak == 1){ break;} } var city = [ {'city':'madrid'}, {'city':'barcelona'}, […]

了解asynchronouscallback

我是新来的asynchronous编程,我很难得到这个概念。 请帮忙!!! 我拿出一个简单的例子: for(var i = 1; i <= 10; i ++){ setTimeout(function(){ 的console.log(ⅰ); },1000); } 我想要的是按升序打印索引,但由于setTimeout强制asynchronous操作​​,我得到的最后一个索引打印了10次。 我明白为什么发生这种情况 无论我尝试了什么(我不认为我的误解需要阐述),我没有解决这个愚蠢的谜语… 我显然缺less一些基本的。 请帮我弄清楚。

具有相同callback函数的多个请求asynchronous

var parsedUrl = req.body.parsedUrl; console.log(parsedUrl); var options = { url: 'https://api.github.com/repos/' + parsedUrl, headers: { 'User-Agent': 'request' } }; var options2 = { url: 'https://api.github.com/repos/' + parsedUrl + '/readme', headers: { 'User-Agent': 'request' } }; function callback(error, response, body) { if (!error && response.statusCode == 200) { var info = JSON.parse(body); Thing.create(info, function(err, thing) { […]

在nodejs中放置数据库检查的正确位置

我正在用NodeJS和ExpressJS构build一个应用程序。 我的文件夹结构如下所示: /app /controllers /models 我试图分离模型中的所有逻辑和数据库调用,以及控制器中的“usertomodel”动作。 在控制器中,我有以下代码:(在控制器中) app.post('/api/nodes/upload/image', processMultipartForm, function(req, res) { if (!req.files.file) { return res.status(400).json({ message: 'INVALID_FILE' }); } … if (ALLOWED_FORMATS.indexOf(file.mimetype) == -1) { return res.status(400).json({ message: 'INVALID_FILE_FORMAT' }); } ….. NodesModel.createFile({ … }, {…}, function(){…}); 做简单的检查。 但是,在完成所有validation之后,我需要完成3个asynchronous数据库调用(例如,检查文件是否存在,权限等),并使用模型中的async npm包中的瀑布模块,它看起来像这:(在模型中) NodesSchema.statics.createFile = function(opts, user, cb) { var _this = this; async.waterfall([ function(callback) { […]