Node.js에서 이벤트를 만드는 방법은 무엇입니까?

17376 단어 node
Originally posted here!

Node.js의 이벤트는 일반적으로 작업 또는 무언가가 수명 주기의 특정 지점에 도달했음을 알리는 데 사용됩니다. 간단히 말해서 이벤트는 특정 작업의 완료를 알리는 데 사용됩니다.

예를 들어 API를 요청하는 것이 이벤트가 될 수 있고 해당 API로부터 응답을 받는 것이 이벤트가 될 수 있습니다.

Node.js에서 사용자 정의 이벤트를 생성할 수 있습니다.

이벤트를 생성하기 위해 Node.js에 있는 events 모듈의 기본 클래스를 사용할 수 있습니다.

Node.js의 이벤트에는 3가지 간단한 사항이 있습니다.
  • 첫번째 이벤트 생성
  • 둘째, 이벤트가 발생했음을 선언하거나 이벤트 emit() 메서드를 사용하여 이벤트를 트리거하는 것입니다(Node.js에서는 이벤트 발생이라고도 함).

  • 세 번째는 해당 이벤트를 수신하는 것입니다.

  • // require events module
    const Event = require("events");
    
    // create a new event
    const event = new Event();
    
    // Listening for an event
    event.on("anEventName", () => {
      console.log("The event is done!");
    });
    
    // Emitting an Event
    event.emit("anEventName");
    


    콘솔에 1에서 100까지 숫자를 로그아웃한 다음 완료되면 이벤트를 트리거하는 간단한 예를 들어 보겠습니다.

    전체 코드로 이동 →



    먼저 Event 모듈의 기본 events 클래스를 다음과 같이 요구해 보겠습니다.

    // require default Event class
    // from events module
    const Event = require("events");
    


    그런 다음 새 이벤트를 만들어야 합니다. 이름을 logEvent으로 지정하겠습니다. 이 이름은 우리 예(Lazy me 😌)에 대해 생각할 수 있는 더 나은 이름입니다.

    이런식으로 할 수 있는데,

    // require default Event class
    // from events module
    const Event = require("events");
    
    // make a new event
    // called logEvent
    const logEvent = new Event();
    


    이제 다음과 같은 1 루프를 사용하여 100에서 for까지의 숫자를 로그아웃하는 간단한 함수를 만들어 보겠습니다.

    // require default Event class
    // from events module
    const Event = require("events");
    
    // make a new event
    // called logEvent
    const logEvent = new Event();
    
    // function which logs
    // numbers from 1 to 100 to console
    function logFrom1to100() {
      for (i = 0; i < 100; i++) {
        console.log(`Number ${i + 1}`);
      }
    }
    


    콘솔에서 숫자를 로그아웃한 후 emit 에서 emit() 메서드를 사용하여 이벤트를 트리거하거나 logEvent 합시다.
    emit() 메서드는 string 유형의 이벤트 이름을 첫 번째 인수로 사용합니다.

    이벤트 이름을 logged to console으로 합시다.

    이렇게 할 수 있습니다.

    // require default Event class
    // from events module
    const Event = require("events");
    
    // make a new event
    // called logEvent
    const logEvent = new Event();
    
    // function which logs
    // numbers from 1 to 100 to console
    function logFrom1to100() {
      for (i = 0; i < 100; i++) {
        console.log(`Number ${i + 1}`);
      }
    
      // trigger an event
      // called logged to console
      logEvent.emit("logged to console");
    }
    


    그런 다음 함수 외부에서 이벤트 logged to console을 수신 대기해야 합니다.
    on() 에서 logEvent 메서드를 사용할 수 있습니다.
    on() 메서드는 2개의 인수를 사용합니다.
  • 첫 번째 인수로 수신 대기할 이벤트의 이름(이 경우 logged to console )
  • 이벤트 발생 시 실행할 콜백 함수
  • logged to console 이벤트를 이렇게 들을 수 있습니다.

    // require default Event class
    // from events module
    const Event = require("events");
    
    // make a new event
    // called logEvent
    const logEvent = new Event();
    
    // function which logs
    // numbers from 1 to 100 to console
    function logFrom1to100() {
      for (i = 0; i < 100; i++) {
        console.log(`Number ${i + 1}`);
      }
    
      // trigger an event
      // called logged to console
      logEvent.emit("logged to console");
    }
    
    // listen for the
    // logged to console
    // event using the on()
    // method on the logEvent
    logEvent.on("logged to console", () => {
      console.log("We have successfully logged to console. Yay! 🍻");
    });
    


    마지막으로 함수 logFrom1to100을 호출하여 이벤트의 기능을 확인하겠습니다.


    // require default Event class
    // from events module
    const Event = require("events");
    
    // make a new event
    // called logEvent
    const logEvent = new Event();
    
    // function which logs
    // numbers from 1 to 100 to console
    function logFrom1to100() {
      for (i = 0; i < 100; i++) {
        console.log(`Number ${i + 1}`);
      }
    
      // trigger an event
      // called logged to console
      logEvent.emit("logged to console");
    }
    
    // listen for the
    // logged to console
    // event using the on()
    // method on the logEvent
    logEvent.on("logged to console", () => {
      console.log("We have successfully logged to console. Yay! 🍻");
    });
    
    // invoke function logFrom1to100()
    logFrom1to100();
    

    Output

    Number 1
    Number 2
    Number 3
    .
    .
    .
    .
    .
    Number 98
    Number 99
    Number 100
    We have successfully logged to the console. Yay! 🍻
    

    We have successfully made an event and listened to it.

    See this example live in repl.it .

    이벤트를 트리거할 때 추가 데이터를 전달하려면 이를 emit() 함수의 두 번째 인수로 전달하고 해당 데이터를 on() 메서드의 콜백 함수에서 첫 번째 매개변수로 가져올 수 있습니다.

    // function which logs
    // numbers from 1 to 100 to console
    function logFrom1to100() {
      for (i = 0; i < 100; i++) {
        console.log(`Number ${i + 1}`);
      }
    
      // trigger an event
      // called logged to console
      // also pass extra data as second argument
      logEvent.emit("logged to console", {
        startNumber: 1,
        endNumber: 100,
      });
    }
    // listen for the
    // logged to console
    // event using the on()
    // method on the logEvent
    // also get the data in the callback function
    logEvent.on("logged to console", (data) => {
      console.log("We have successfully logged to console. Yay! 🍻");
      console.log(data);
    });
    


    😃 유용하셨다면 공유해 주세요.

    좋은 웹페이지 즐겨찾기