本文实例讲述了node.js实现回调的方法。分享给大家供大家参考,具体如下:

向回调函数传递额外的参数
在调用函数中,使用匿名函数中实现需传递的参数,再次匿名函数内调用回调函数。
var events = require("events");
function CarShow() {
events.EventEmitter.call(this);
this.seeCar = function (make) {
this.emit('sawCar', make);
}
}
CarShow.prototype.__proto__ = events.EventEmitter.prototype;
var show = new CarShow();
function logCar(make) {
console.log("Saw a "+make);
}
function logColorCar(make, color) {
console.log("Saw a %s %s ", color, make);
}
show.on("sawCar", logCar);
show.on("sawCar", function (make) {
var colors = ["red", "blue", "black", "pink", "green"];
var color = colors[Math.floor(Math.random()*3)];
logColorCar(make, color);
});
show.seeCar("Ferrari");
show.seeCar("Porsche");
show.seeCar("Bugatti");
在回调中实现闭包
如果某个回调函数需要访问父函数的作用域的变量,就需要使用闭包,在函数块内部封装一个异步调用,并传入所需要的变量。
function logCar(logMsg, callback) {
process.nextTick(function () {
callback(logMsg);
});
}
var cars = ["猎豹", "捷达", "朗逸"];
for(var idx in cars){
var msg = "Saw a "+cars[idx];
logCar(msg, function () {
console.log("Normal Callback "+ msg);
});
}
for(var idx in cars){
var msg = "Saw a "+cars[idx];
(function (msg) {
logCar(msg, function () {
console.log("Closure Callback "+ msg);
})
})(msg);
}
//Normal Callback Saw a 朗逸
//Normal Callback Saw a 朗逸
//Normal Callback Saw a 朗逸
//Closure Callback Saw a 猎豹
//Closure Callback Saw a 捷达
//Closure Callback Saw a 朗逸
链式回调
使用异步函数时,如果两个函数都在事件队列上,则无法保证它们的运行顺序。解决方法是让来自异步函数的回调再次调用该函数,直到没有更多的工作要做,以执行链式回调。
function logCar(car, callback) {
console.log("Saw a %$", car);
if(cars.length){
process.nextTick(function () {
callback();
});
}
}
function logCars(cars) {
var car = cars.pop();
logCar(car, function () {
logCars(cars);
});
}
var cars = ["猎豹", "捷达", "朗逸"];
logCars(cars);
希望本文所述对大家nodejs程序设计有所帮助。
# node.js
# 回调
# Node.js基础入门之回调函数及异步与同步详解
# 如何将Node.js中的回调转换为Promise
# Node.js 回调函数实例详解
# 深入理解Node.js 事件循环和回调函数
# 剖析Node.js异步编程中的回调与代码设计模式
# node.js回调函数之阻塞调用与非阻塞调用
# 我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
# Node.js Continuation Passing Style(
# 捷达
# 链式
# 都在
# 要做
# 给大家
# 所需要
# 解决方法
# 所述
# 程序设计
# 讲述了
# seeCar
# emit
# sawCar
# CarShow
# EventEmitter
# call
# prototype
# console
# log
相关文章:
如何配置支付宝与微信支付功能?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
C++如何编写函数模板?(泛型编程入门)
已有域名和空间如何搭建网站?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
建站之星与建站宝盒如何选择最佳方案?
免费公司网站制作软件,如何申请免费主页空间做自己的网站?
如何做网站制作流程,*游戏网站怎么搭建?
建站之星安装步骤有哪些常见问题?
如何在万网自助建站中设置域名及备案?
如何通过老薛主机一键快速建站?
定制建站哪家更专业可靠?推荐榜单揭晓
建站168自助建站系统:快速模板定制与SEO优化指南
广东企业建站网站优化与SEO营销核心策略指南
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
c# 服务器GC和工作站GC的区别和设置
香港服务器租用每月最低只需15元?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
外贸公司网站制作哪家好,maersk船公司官网?
seo网站制作优化,网站SEO优化步骤有哪些?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
代刷网站制作软件,别人代刷火车票靠谱吗?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
做企业网站制作流程,企业网站制作基本流程有哪些?
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何快速生成凡客建站的专业级图册?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
建站VPS配置与SEO优化指南:关键词排名提升策略
教程网站设计制作软件,怎么创建自己的一个网站?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
h5在线制作网站电脑版下载,h5网页制作软件?
建站之星在线客服如何快速接入解答?
定制建站策划方案_专业建站与网站建设方案一站式指南
建站之星CMS五站合一模板配置与SEO优化指南
如何快速打造个性化非模板自助建站?
建站主机与服务器功能差异如何区分?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
详解jQuery中基本的动画方法
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
大连网站制作公司哪家好一点,大连买房网站哪个好?
建站主机SSH密钥生成步骤及常见问题解答?
如何确保西部建站助手FTP传输的安全性?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何在阿里云通过域名搭建网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。