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、将文件系统上的文件路径作为第一个参数提供给fs.readFile 方法

3、第二个参数是utf8,表示文件的编码

4、将回调函数所谓第三个参数提供给fs.readFile方法

5、回调函数的第一个参数是err,用于保存在读取文件是返回的错误

6、回调函数的第二个参数data,用于保存读取文件所返回的数据

7、一旦文件被读取,回调函数就会被调用,如果err为真则抛出错误,否则来自文件上的数据就会被记录在控制台上

实例二:

var http = require(‘http‘);

http.get({host:‘shapeshed.com‘}, function(res){
   console.kis(‘Got response: " + res.statusCode‘);
}).on(‘error’,function(e) {
    console.lso("Got error: " + e.message);
})

代码解释:

1、请求http模块

2、给http.get提供两个参数

3、第一个参数是选项对象,即要求获取shepeshed.com的主页

4、第二个参数是一个以响应作为参数的回调函数

5、当远程服务器返回响应式,会触发回调函数

6、在回调函数内记录响应状态码,如果有错误就将其记录下来

时间: 2024-12-29 09:45:09

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

node.js中的回调

同步和阻塞:这两个术语可以互换使用,指的是代码的执行会在函数返回之前停止.如果某个操作阻塞,那么脚本就无法继续,这意味着必须等待. 异步和非阻塞:这两个术语可以互换使用,指的是基于回调的.允许脚本并行执行操作的方法.脚本无需等待某个操作的结果才能继续前进,因为操作结果会在事件发生时由回调来处理.使用异步方法,操作无需一个接一个地发生(自己注:就是并行了). @1 同步和阻塞的例子: function sleep(milliseconds) { var start = new Date().get

Node.js链式回调

由于异步的关系,代码的书写顺序可能和执行顺序并不一样,可能想先执行A再执行B,但由于异步可能B要先于A执行.例如在OC中使用AFnetworking请求数据然后刷新页面,由于网络请求是用block实现的异步方法,所以刷新的时候并没有数据,为了解决这个问题,一般会在请求响应结束在block中刷新页面(这就回出现循环引用的问题,不过node中不会出现). 上面是OC中异步执行中的链式回调,在node.js中也是使用这样的方法在回调中调用方法来实现链式回调. function logCar(car,c

node.js异步控制流程 回调,事件,promise和async/await

写这个问题是因为最近看到一些初学者用回调用的不亦乐乎,最后代码左调来又调去很不直观. 首先上结论:推荐使用async/await或者co/yield,其次是promise,再次是事件,回调不要使用. 接下来是解析,为什么我会有这样的结论 首先是回调,理解上最简单,就是我把任务分配出去,当你执行完了我就能从你那里拿到结果执行相应的回调, 这里演示一个对setTimeout的封装,规定时间后打印相应结果并执行回调函数 并且这个函数传给回调函数的参数符合node标准,第一个为error信息,如果出错e

node.js的作用、回调、同步异步代码、事件循环

http://www.nodeclass.com/articles/39274 一.node.js的作用 I/O的意义,(I/O是输入/输出的简写,如:键盘敲入文本,输入,屏幕上看到文本显示输出.鼠标移动,在屏幕上看到鼠标的移动.终端的输入,和看到的输出.等等) node.js想解决的问题,(处理输入,输入,高并发 .如 在线游戏中可能会有上百万个游戏者,则有上百万的输入等等)(node.js适合的范畴:当应用程序需要在网络上发送和接收数据时Node.js最为适合.这可能是第三方的API,联网设

【360开源】thinkjs:基于Promise的Node.js MVC框架 (转)

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).会

Node.js使用fs.renameSync报cross-device link not permitted错误

在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 ()

JavaScript简明教程之Node.js

Node.js是目前非常火热的技术,但是它的诞生经历却很奇特. 众所周知,在Netscape设计出JavaScript后的短短几个月,JavaScript事实上已经是前端开发的唯一标准. 后来,微软通过IE击败了Netscape后一统桌面,结果几年时间,浏览器毫无进步.(2001年推出的古老的IE 6到今天仍然有人在使用!) 没有竞争就没有发展.微软认为IE6浏览器已经非常完善,几乎没有可改进之处,然后解散了IE6开发团队!而Google却认为支持现代Web应用的新一代浏览器才刚刚起步,尤其是浏

Node.js API —— Timers(定时器)

// 说明 Node API 版本为 v0.10.31.    中文参考:http://nodeapi.ucdok.com/#/api/ 本段为博主注解. 目录 ● 定时器    ○ setTimeout(callback, delay, [arg], [...])    ○ clearTimeout(timeoutObject)    ○ setInterval(callback, delay, [arg], [...])    ○ clearInterval(intervalObject) 

好厉害的库edge js 实现C 与node js互操作

最近在网上闲逛,又发现个好东西,edge.js 这个库可以让node.js 调用 C# 的代码,还可以让 C# 调用node.js 的代码,看到这里,只问你服不服?反正我是很惊叹了-- 不过edge.js也有个限制,必须是.net 4.5 以上才可以用,因为使用了一些.net 新特性Task,asyn,await,这些特性正好对应node.js的异步回调 来自edge.js官网的例子,node.js 调用 C# var edge = require('edge'); var hello = ed