全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

node.js实现回调的方法示例

本文实例讲述了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小时内与您取得联系。