Node.js의 비동기 제어 흐름이란 무엇입니까?

Node Jsui Bidong Gi Jeeo Heuleum Ilan Mueos Ibnikka



제어 흐름은 애플리케이션의 상주 프로세스가 실행되는 실행 방식입니다. 이 흐름은 전체 프로그램의 특정 부분을 먼저 실행하거나 임의의 메서드가 완료된 후에 실행하려는 경우에 많은 도움이 됩니다. 실행 흐름은 일반적으로 활용되는 메서드의 특성에 따라 비동기식 또는 동기식으로 설정됩니다.

이 글에서는 Node.js의 비동기 제어 흐름의 작동 및 구현에 대해 설명합니다.

Node.js의 비동기 제어 흐름이란 무엇입니까?

Node.js의 비동기 제어 흐름은 네트워크 요청 만들기, 이벤트 처리 등과 같은 비동기 작업을 처리할 때 실행 흐름을 관리하고 제어하는 ​​방식을 나타냅니다. Node.js는 비동기식 특성을 위해 특별히 설계되었지만 특정 코드가 의도한 순서로 실행되고 오류 처리를 효과적으로 수행하는지 확인하는 것이 더 좋습니다.







비동기 제어 흐름의 이해도를 높이기 위한 코드 예제를 살펴보겠습니다.



fsObj였습니다 = 필요하다 ( 'fs' ) ;
//추상화된 콜백 함수
함수 readFileAsync ( 대상파일경로 ) {
반품 새로운 약속하다 ( ( 해결하다, 거부하다 ) => {
fsObj. 읽기파일 ( 대상파일경로, 'utf-8' , ( 오류, 내용 ) => {
만약에 ( 오류 ) {
거부하다 ( 오류 ) ;
} 또 다른 {
해결하다 ( 콘텐츠 ) ;
}
} ) ;
} ) ;
}

// 여러 파일 읽기를 순차적으로 수행하는 함수
비동기 함수 readFileSequentially ( ) {
노력하다 {
const 파일1데이터 = readFileAsync를 기다립니다 ( 'mynewfile1.txt' ) ;
콘솔. 통나무 ( '첫 번째 파일 데이터:' , 파일1데이터 ) ;

const 파일2데이터 = readFileAsync를 기다립니다 ( '유즈케이스.txt' ) ;
콘솔. 통나무 ( '두 번째 파일 데이터:' , 파일2데이터 ) ;

const 파일3데이터 = readFileAsync를 기다립니다 ( '패키지.json' ) ;
콘솔. 통나무 ( '세 번째 파일 데이터:' , 파일3데이터 ) ;
} 잡다 ( 오류 ) {
콘솔. 오류 ( '오류가 발생했습니다:' , 오류 ) ;
}
}

파일을 순차적으로 읽음 ( ) ;

위 코드에 대한 설명은 다음과 같습니다.



  • 먼저 '를 가져옵니다. FS ” 모듈을 선택하고 해당 객체를 “ fsObj ” 변수입니다.
  • 그런 다음 ' 읽기파일Async() ”라는 단일 매개변수를 갖는 명명된 함수 대상파일경로 ”에는 대상 파일의 경로가 포함되어 있습니다.
  • 이 함수는 ' 약속하다 ” 여기에는 2개의 매개변수로 구성된 필수 콜백 함수가 포함되어 있습니다. 해결하다 ' 그리고 ' 거부하다 '.
  • 콜백 함수 내에서 '를 호출합니다. 파일 읽기() ”에서 제공하는 방법 FS ” 모듈. 또한 제공된 매개변수 “ 대상파일경로 '를 'readFile()' 메소드의 첫 번째 매개변수로 사용합니다.
  • 읽기파일 ” 메소드에는 “ 매개변수를 갖는 필수 콜백 함수도 포함되어 있습니다. 오류 ' 그리고 ' 콘텐츠 '. “를 통과시키세요. 오류 ' 로 ' 거부하다() ” 오류 발생 시 방법 및 “ 콘텐츠 ' 로 ' 해결하다() ” 오류가 발견되지 않은 경우 방법.
  • 이제 '라는 이름의 비동기 함수를 만듭니다. 파일순차읽기() ” 그리고 여기에는 “ 시도/잡기 ' 차단하다.
  • “ 안에 노력하다 ” 블록에서 이미 생성된 “를 호출하여 생성된 결과를 저장하는 세 개의 변수를 생성합니다. 읽기파일Async() ' 기능. 실행해야 하는 원하는 파일의 경로가 이 함수 괄호 안에 전달될 때마다.
  • 키워드 ' 기다리다 '는 파일 읽기 작업이 완료될 때까지 제어 흐름을 중지하기 위해 호출 시 함수 뒤에 배치됩니다.
  • 또한 콘솔에 변수를 표시하여 검색되거나 읽은 파일 내용을 표시합니다.
  • 마지막으로, 포함된 '를 호출합니다. 파일순차읽기() ' 기능.

실행을 위해서는 위의 코드를 확장자가 ''인 원하는 파일에 넣어주시면 됩니다. .js '는 Node.js 프로젝트 내에 있습니다. 우리 경우의 주요 파일은 “ controlFlow.js ”, 따라서 실행 명령은 다음과 같습니다.





노드 제어 흐름. JS

생성된 출력은 비동기 제어 흐름을 사용하여 원하는 파일에 대한 데이터가 순서대로 표시됨을 보여줍니다.



Node.js 차단 코드의 가능한 원인과 방지 단계는 무엇입니까?

동기 코드는 ' 블록 코드 ” 실행 중인 프로세스가 실행될 때까지 프로세스 실행을 중단합니다. 이로 인해 애플리케이션 성능과 응답성이 저하됩니다. 코드 차단은 일반적으로 동기 또는 CPU 바인딩 작업으로 인해 발생합니다. 코드 차단의 가능한 원인과 이를 방지하는 방법은 아래 표에 설명되어 있습니다.

코드 차단의 원인 코드 차단 솔루션
fs.readFileSync()와 같은 동기식 파일 작업을 사용합니다. fs.readFile과 같은 비동기 파일 작업을 사용합니다.
과도한 계산이나 장기 실행 루프와 같은 CPU 바인딩 작업을 사용합니다. CPU 바인딩된 작업을 더 작은 비차단 청크로 나누어 작업자 스레드로 오프로드합니다.
원격 API에 대한 HTTP 요청 사용으로 인해 외부 네트워크 요청 속도가 느려짐 Axios나 내장된 'http' 또는 'https' 모듈과 같은 비동기 HTTP 라이브러리를 사용하십시오.
최적화되지 않은 데이터베이스 쿼리 데이터베이스에서 제공하는 쿼리 최적화 도구를 사용하여 데이터베이스 쿼리를 최적화합니다.
중단 없이 무한 루프 또는 긴밀한 루프를 사용합니다. 루프에 종료 조건이 있고 무한히 실행되지 않는지 확인하십시오.

결론

비동기 제어 흐름은 '라는 키워드를 사용합니다. 비동기/대기 ” 비동기 방식으로 실행 흐름을 수정하거나 제어합니다. 필요한 비동기 메서드에 대한 콜백은 추상화되어 별도의 함수에 저장됩니다. 그런 다음 이 함수는 원하는 대로 다른 메서드와 함께 순차적인 방식으로 wait 키워드를 사용하여 호출됩니다. 이러한 함수는 실행을 시작하기 위해 호출되는 또 다른 사용자 정의 비동기 함수에 저장됩니다. 이 가이드에서는 Node.js의 비동기 제어 흐름을 설명했습니다.