小编给大家分享一下Nodejs中callback回调的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
什么是callback
? 很显然,字面意思就是回调
那为什么在Node中需要回调操作呢?了解过Node的同学可能会知道,就是为处理异步操作的结果。
下面就是针对这个问题来详细说一下:
在说异步操作的callback
回调之前,我们先看一下同步的操作模式:
function processData () { var data = fetchData (); data += 1; return data; }
这种同步模式一般情况下可以正常工作,在其他开发环境下这种操作也是很典型的。然后可以明显的看到fectData
方法如果在加载数据的时候很耗时,就会造成在数据同步加载完成之前整个程序阻塞的情况。
Node.js是一个异步的操作处理的平台,其使用callback
回调的形式将不会被类似于文件I/O操作等阻塞。一个回调函数就是在一个给定的任务执行完成之后执行的函数;这种方式可以避免一些阻塞的情况,同时允许其他的代码继续执行。
我们使用Node.js的回调的形式去处理上面的同步操作fetchData
耗时的情况:
function processData (callback) { fetchData(function (err, data) { if (err) { console.log("An error has occurred. Abort everything!"); return callback(err); } data += 1; callback(data); }); }
一开始看的话,确实会觉得有些复杂,不太容易理解,但是确实很重要,因为回调处理异步操作是Node.js的基础。
callback
回调的意思就是:你的异步操作完成之后,你就执行我的callback
回调里面的内容。
Node.js这种回调处理异步操作的形式允许我们尽可能多的处理并发操作(操作类似于IO操作)
举个例子:
在一个web服务上,前面有几个请求,由于某种原因阻塞了,同时之后还会有成百上千的请求正在发出;
Node.js会如何处理这种异步阻塞的情况呢?
其会执行异步的执行阻塞查询,使之后的查询请求可以正常工作,而不是说等待前面的阻塞请求结束之后,才去处理之后的请求。
下面是是使用异步函数的典型格式:
function asyncOperation ( a, b, c, callback ) { // ... lots of hard work ... if ( /* an error occurs */ ) { return callback(new Error("An error has occurred")); } // ... more work ... callback(null, d, e, f); } asyncOperation ( params.., function ( err, returnValues.. ) { //This code gets run after the async operation gets run });
callback
一般是异步函数的做后一个参数,当异步操作结束之后,去调用这个callback
。
一般情况下,callback
的第一个参数是error
如果异步操作遇到了错误,就会去调用callback
,第一个参数是一个Error
对象;反之,第一个error
为null
,其他参数正常返回。
以上是“Nodejs中callback回调的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。