国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

node.js實(shí)現(xiàn)回調(diào)的方法示例

2019-11-19 17:22:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了node.js實(shí)現(xiàn)回調(diào)的方法。分享給大家供大家參考,具體如下:

向回調(diào)函數(shù)傳遞額外的參數(shù)

在調(diào)用函數(shù)中,使用匿名函數(shù)中實(shí)現(xiàn)需傳遞的參數(shù),再次匿名函數(shù)內(nèi)調(diào)用回調(diào)函數(shù)。

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");

在回調(diào)中實(shí)現(xiàn)閉包

如果某個(gè)回調(diào)函數(shù)需要訪問(wèn)父函數(shù)的作用域的變量,就需要使用閉包,在函數(shù)塊內(nèi)部封裝一個(gè)異步調(diào)用,并傳入所需要的變量。

function logCar(logMsg, callback) {  process.nextTick(function () {    callback(logMsg);  });}var cars = ["獵豹", "捷達(dá)", "朗逸"];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 捷達(dá)//Closure Callback Saw a 朗逸

鏈?zhǔn)交卣{(diào)

使用異步函數(shù)時(shí),如果兩個(gè)函數(shù)都在事件隊(duì)列上,則無(wú)法保證它們的運(yùn)行順序。解決方法是讓來(lái)自異步函數(shù)的回調(diào)再次調(diào)用該函數(shù),直到?jīng)]有更多的工作要做,以執(zhí)行鏈?zhǔn)交卣{(diào)。

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 = ["獵豹", "捷達(dá)", "朗逸"];logCars(cars);

希望本文所述對(duì)大家nodejs程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泰宁县| 社会| 长治县| 万荣县| 建阳市| 巴东县| 攀枝花市| 平南县| 札达县| 沈阳市| 微山县| 松阳县| 灵山县| 珲春市| 原阳县| 青龙| 梓潼县| 和静县| 阳西县| 蓬溪县| 崇文区| 襄樊市| 喀什市| 盘锦市| 上蔡县| 江北区| 都匀市| 乌恰县| 湖南省| 克东县| 长海县| 崇礼县| 西乌| 禹州市| 奎屯市| 九龙坡区| 德庆县| 乌鲁木齐县| 万州区| 郧西县| 兖州市|