Articles of asynchronous

什么函数应该是asynchronous的(放在Node.js中)?

我对这个问题的了解一般都很低,所以请耐心等待。 我明白,可能需要额外延迟的function,如数据库读取/写入,文件读取等应该asynchronous运行,以免阻塞。 我的search后没有真正回答的是: 应该像一个简单的for循环asynchronous运行? 这可能是如下简单的事情: function a() { var a = 0; for(i=0; i<10000000; i++) { a++; }; }; 因为像这样的事情可能需要几毫秒,应该把它放在一个Node.js的承诺? 我是否正确地认为,如果我不这样做,那么会有阻塞,尽pipe只有几毫秒?

Nodejs监听来自http.get()的数据事件的响应stream

我正在学习Node.js 为此,我正在使用有用的nodeschool.io研讨会。 我正在阅读learnyounode研讨会。 在http客户端和HTTP收集部分我有一个问题。 尽pipe我已经阅读了他们和node.js上的API文档。 第一个挑战是, “将响应中每个”数据“事件的string内容写入控制台(stdout)中的新行。” 它在https收集部分说,“从服务器收集所有数据(不只是第一个”数据“事件)…”并引用第一个,因为它不收集所有数据。 不是 var allData = ""; response.setEncoding('utf8'); response.on('data', function(data){ allData = concat(allData, data); } 能够收集响应中的所有数据。 就目前为止我已经理解的asynchronous性质,下面的第一个callback将被称为asynchronoushttp.get()完成时。 或者我错了http.get()不是asynchronous的。 var http = require('http'); var urlString = process.argv[2]; http.get(urlString, function callback (response) { response.setEncoding('utf8'); response.on('data', console.log); response.on('error', console.error); }) 这段代码执行时会发生什么? callback是否等待http.get()完成并提供response ,所以http.get()是asynchronous的? 如果是这样,当事件被触发时, response.on(..)行正在侦听,创build后。 是不是在监听正在创buildresponse执行的连续过程,在这种情况下, callback不应该等待http.get()完成执行,以便事件侦听器可用于由response对象触发的事件? 一个解释可以是这样的; http.get()做什么来创build一个响应对象到服务器上写入并完成。 因此,它通过创build响应对象来完成它的工作,从现在开始,服务器可能会开始写入这个响应stream,并且callback已经开始,监听服务器写入任何位数据时触发“数据”事件的响应stream到它。 这在逻辑上是可能的。

在Node.js中用fs.readdir()列出文件时遇到麻烦

我正在通过“ 学习Node.js获得很多胜利! ”工作坊的方式工作,但我在练习5时遇到了麻烦。它要求您Create a program that prints a list of files in a given directory, filtered by the extension of the files. 我传入了包含各种JavaScript,Ruby和纯文本文件的目录,文件。 它应该是console.log()每个扩展名为.js文件。 var fs = require('fs'); function indexDirectory(directory) { fs.readdir(directory, function(err, files) { for (var i in files) { if (i.indexOf('.js') != -1) { console.log(files[i]); } } }); } indexDirectory('files'); 我当前的代码不会输出任何东西,当我运行node program.js 。 […]

节点:尝试重命名目录中的每个文件跳过一些

我试图通过一个目录(及其所有的子目录),并重命名(移动)每个图像,如果它是一个.jpg文件。 我认为我的代码是正确的。 我正在使用asynchronous重命名和递增计数器来增加文件名。 由于某些原因,在我的四个左右子文件夹的testing中,只有一半的图像被重命名。 我不知道这是为什么,因为我只是在callback文件(一旦图像已经成功重命名)和检查控制台列出rename被调用的每个文件时递增。 var fs = require('fs'); var filePrefix = 'new_Images'; var folderName = 'changed'; var counter = 0; function examine (path) { fs.readdir(path, function (err, files) { files.forEach(function (file) { var oldPath = path + file; fs.stat(oldPath, function (err, stats) { if (stats.isDirectory()) { examine(oldPath + '/'); } else { var suffix […]

async.times函数不会触发callback

我正在尝试使asynchronous正常工作。 在这个例子中,我想创build并保存一些mongoose对象,并在作业完成时获得callback。 即使对象保存在数据库中,callback也不会触发。 控制台日志也不显示。 谁能帮我找出我错过了什么? var number_of_objects = 5; async.times(number_of_objects, function(n, next){ var myObject = new Object({ random_string : Math.random().toString(36).substring(7), isActive: false }); myObject.save(n,function(err,object) { console.log("saved"); console.log(n); next(err,object); }); },function(err, objects) { console.log(objects); res.sendStatus(200); }); 提前谢谢了

从NodeJSasynchronous中返回值

我在Node中缺less一些简单的东西,我有一个需要导出的函数,并返回一个asynchronous值。 我不知道如何让Node在返回值之前“等待”,我显然被宠坏了前端的JavaScript和数据绑定… 下面的代码不会等待用户返回数据(推送者是一个rest呼叫),所以它总是不确定的。 exports.getMembers = function(channel) { var users; pusher.get( { path: '/channels/'+channel+'/users', params: {} }, function( error, request, response ) { if( response.statusCode === 200 ) { var result = JSON.parse( response.body ); users = result.users; return users; } else { console.log(error); } } ); //return users; };

mysql用户authentication为nodeftpd

我想用mysqlftpdauthentication,但问题是connection.query()是asynchronous和脚本在mysql返回结果之前完成。 虽然,我已经制定了一个解决scheme,但它是一个黑客,并不是一个真正的解决scheme,是丑陋的。 那么如何在命令中使用mysql进行身份validation:通过nodeftpd库 所以它更多的是如何正确的,可能! conn.on('command:pass', function(pass, success, failure) { if(pass) con.query('select * from wp_users where user_login = ? and user_pass = ?',[username, pass], function(err, rows, fields){ if(rows.length > 0 ){ success(); return; }else{ failure(); return; } console.log('yy'); }); console.log('xx'); failure(); });

如何捕捉node.js中同步函数的错误?

在asynchronous函数中,我们可以简单地捕获callback中的错误。 例如 : asynchronous函数: fs.readdir(path, function(err){ //catch error ) 由于同步函数没有callback,我怎样才能捕捉错误? 同步function: fs.readdirSync(path); //throws some error 一种方法是使用try catch块: try{ fs.readdirSync(path); } catch(err){ //do whatever with error } 有没有其他方法可以做到这一点? 如果是,那哪一个更好?

并行运行asynchronous代码

使用aync库,是否可以创build真正的asynchronous任务,而无需使用预先构build的asynchronousI / O函数? 例如,如果运行此代码,它将始终按顺序运行这些函数,因为node.js是“单线程的”。 var async = require('async'); async.parallel([ function(){ console.log('1') }, function(){ console.log('2') }, function(){ console.log('3') }, function(){ console.log('4') } ]); 我们不应该阻止节点 – 是的 – 但node.js运行在单核上。 如果我们想利用其他内核,我们可以产生进程,并以这种方式使用asynchronous库。 除了集群模块之外,是否有其他核心上产生asynchronous进程的最佳实践方法?

更新待办事项列表,而无需刷新express nodejs应用程序中的页面

我是快速nodejs应用程序的新手。 我想做一个待办事项列表。 这是迄今为止的样子。 我的问题是当我添加一个待办事项,它需要一些时间来显示更改,因为它重新加载页面。 如何在不重新加载页面的情况下实时查看更改。 提前致谢。 在tasks.jade中 h1= title .list .item.add-task div.action form(action='/tasks', method='post', id='12345') input(type='hidden', value='true', name='all_done') input(type='hidden', value=locals._csrf, name='_csrf') input(type='submit', class='btn btn-success btn-xs', value='all done') form(action='/tasks', method='post') input(type='hidden', value=locals._csrf, name='_csrf') div.name input(type='text', name='name', placeholder='Add a new task') div.delete input.btn.btn-primary.btn-sm(type="submit", value='add') if (tasks.length === 0) | No tasks. each task, index in tasks .item […]