> 웹 프론트엔드 > JS 튜토리얼 > [Node.js] 동기화와 비동기의 차이점

[Node.js] 동기화와 비동기의 차이점

帅杰杰
풀어 주다: 2020-05-13 16:00:11
원래의
195명이 탐색했습니다.

파일 작업에 Node.js를 사용하려면 먼저 require('fs')를 사용하여 파일 시스템 템플릿을 로드하세요. 비동기식 메서드의 마지막 매개변수는 완전한 콜백 함수(콜백 함수)입니다. 콜백 함수에 전달되는 매개변수는 일반적으로 메서드 자체에 따라 다르지만 첫 번째 매개변수는 항상 예외(err)입니다. 메서드가 성공적으로 실행되면 첫 번째 매개 변수는 null이거나 정의되지 않습니다. 동기 메서드를 사용하여 실행하면 모든 예외가 즉시 발생합니다. try 또는 catch를 사용하여 예외를 처리하고 오류 정보를 표시할 수 있습니다.

tmp 폴더에 hello 파일이 있는 비동기 방식의 예를 제공합니다.

이 코드는 tmp 디렉터리의 hello 파일을 삭제합니다. 삭제에 성공하면 삭제 성공 정보가 콘솔에 출력됩니다.

引入fs模块
const fs=require("fs");
//异步操作读取文件
fs.unlink('./tmp/hello',(err)=>{
    if(err) throw err;
    console.log('成功删除hello文件');
});
로그인 후 복사

동일한 기능을 달성하기 위해 비동기식 메서드를 사용할 수도 있습니다.

引入fs模块
const fs=require("fs");
//同步操作读取文件
fs.unlinkSync('./tmp/hello');
console.log('成功删除hello文件');
로그인 후 복사

비동기 작업 방법은 성공적인 실행을 보장할 수 없으므로 코드 실행 중에 파일 작업 순서가 매우 중요합니다.

예: 다음 코드는 오류를 발생시킵니다.

//重命名hello文件为world文件
fs.rename('./tmp/hello','./tmp/world',(err)=>{
  if(err) throw err;
  console.log('renamed complete');
});
//获取world文件的信息
fs.stat('./tmp/world',(err)=>{
  if(err) throw err;
    console.log(`stats:${JSON.stringify(stats)}`);
});
로그인 후 복사

fs.stat는 fs.rename 전에 실행됩니다. 올바른 방법은 콜백 함수를 사용하여 실행하는 것입니다.

다음은 프로그램 실행 중 예외를 처리하기 위한 콜백 함수의 올바른 사용입니다.

fs.rename('./tmp/hello','./tmp/world',(err)=>{
    if(err) throw err;
    fs.stat('./tmp/world',(err,stats)=>{
        if(err) throw err;
        console.log(`stats:${JSON.stringify(stats)}`);
    });
});
로그인 후 복사

참고: 대규모 시스템에서는 비동기식 방법을 사용하는 것이 좋습니다. 동기식 방법을 사용하면 프로세스가 잠길 수 있습니다. 동기식 방법과 비교할 때 비동기식 방법은 성능이 더 뛰어나고 빠르며 차단이 적습니다.

위 내용은 [Node.js] 동기화와 비동기의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
1
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿