node.js如何使用回调】的更多相关文章

Node.js到处使用回调,尤其在有I/O(输入/输出)操作的地方. 下面是在一个Node.js中使用filesystem模块中从磁盘上读入文件内容示例一: var fs = require('fs'); fs.redFile('somefile.txt', 'urf8', function (err, data) { if (err throw err); console.log(data); }); 以下是所发生的事情: 1.fs(filesystem)模块被请求,以便在脚本中使用 2.将文…
同步和阻塞:这两个术语可以互换使用,指的是代码的执行会在函数返回之前停止.如果某个操作阻塞,那么脚本就无法继续,这意味着必须等待. 异步和非阻塞:这两个术语可以互换使用,指的是基于回调的.允许脚本并行执行操作的方法.脚本无需等待某个操作的结果才能继续前进,因为操作结果会在事件发生时由回调来处理.使用异步方法,操作无需一个接一个地发生(自己注:就是并行了). @1 同步和阻塞的例子:     function sleep(milliseconds) {       var start = new…
Node.js标准的回调函数:第一个参数代表错误信息,第二个参数代表结果. function (err, data) 当正常读取时,err参数为null,data参数为读取到的String.当读取发生错误时,err参数代表一个错误对象,data为undefined. if (err) { // 出错了 } else { // 正常 }…
Node.js是基于事件驱动编程.异步函数随处可见,其中不乏一些常用库的方法.本例就以js中最常见的setTimeout的为例,试图改善一下回调的书写. 先来看一段伪代码: 我们实现一个需求,每隔一段时间打印一段字符串,按照一般的同步设计思维,那么大概是这个样子: ; i < ; i++) { sleep(i); printf("out:%d", i); } 但是在js中可就没这么简单了.首先,类似sleep的setTimeout函数睡眠之后的事件就在回调当中 setTimeou…
由于异步的关系,代码的书写顺序可能和执行顺序并不一样,可能想先执行A再执行B,但由于异步可能B要先于A执行.例如在OC中使用AFnetworking请求数据然后刷新页面,由于网络请求是用block实现的异步方法,所以刷新的时候并没有数据,为了解决这个问题,一般会在请求响应结束在block中刷新页面(这就回出现循环引用的问题,不过node中不会出现). 上面是OC中异步执行中的链式回调,在node.js中也是使用这样的方法在回调中调用方法来实现链式回调. function logCar(car,c…
写这个问题是因为最近看到一些初学者用回调用的不亦乐乎,最后代码左调来又调去很不直观. 首先上结论:推荐使用async/await或者co/yield,其次是promise,再次是事件,回调不要使用. 接下来是解析,为什么我会有这样的结论 首先是回调,理解上最简单,就是我把任务分配出去,当你执行完了我就能从你那里拿到结果执行相应的回调, 这里演示一个对setTimeout的封装,规定时间后打印相应结果并执行回调函数 并且这个函数传给回调函数的参数符合node标准,第一个为error信息,如果出错e…
http://www.nodeclass.com/articles/39274 一.node.js的作用 I/O的意义,(I/O是输入/输出的简写,如:键盘敲入文本,输入,屏幕上看到文本显示输出.鼠标移动,在屏幕上看到鼠标的移动.终端的输入,和看到的输出.等等) node.js想解决的问题,(处理输入,输入,高并发 .如 在线游戏中可能会有上百万个游戏者,则有上百万的输入等等)(node.js适合的范畴:当应用程序需要在网络上发送和接收数据时Node.js最为适合.这可能是第三方的API,联网设…
基本模块之fs 异步读文件 异步读取一个文本文件的代码如下: 'use strict'; var fs = require('fs'); fs.readFile('sample.txt', 'utf-8', function (err, data) { if (err) { console.log(err); } else { console.log(data); } }); 异步读取时,传入的回调函数接收两个参数,当正常读取时,err参数为null,data参数为读取到的string.当读取发…
在Node.js中,我们可以使用formidable模块来轻松地实现文件上传功能,代码如下: var Q = require('q'); var util = require('util'); var fs = require('fs'); var path = require('path'); var moment = require('moment'); var formidable = require('formidable'); var imageUpload = function ()…
thinkjs是360奇舞团开源的一款Node.js MVC框架,该框架底层基于Promise来实现,很好的解决了Node.js里异步回调的问题.360奇舞团(奇虎75Team),是奇虎360公司Web平台部前端工程师与部分特约嘉宾组成的一个前端团队. thinkjs主要特性有: 支持Http.命令行.WebSocket.Restful等多种访问方式: 项目实行“C(Core)+B(Behavior)+D(Driver)”架构: Model高度封装,无需手写SQL语句: 封装了数据库(DB).会…