node.js 리 셋 방법 예시

2740 단어 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 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기