>  기사  >  웹 프론트엔드  >  NodeJs 비동기 프로그래밍의 의미를 깊이 이해합니다.

NodeJs 비동기 프로그래밍의 의미를 깊이 이해합니다.

藏色散人
藏色散人앞으로
2022-08-08 14:38:141753검색

먼저 비동기 프로그래밍이 무엇인지 이해하세요.

의미:

  • 비동기가 있으면 반드시 동기화도 있습니다

  • 존재하는 모든 콜백 함수는 비동기 코드입니다

  • 먼저 동기 코드를 실행하고, 비동기 코드를 본 후 비동기 코드를 비동기 코드 실행 영역에 넣습니다(먼저 실행되지 않음)

  • 계속 동기 코드 실행이 모두 완료되면 비동기 코드를 실행합니다.

비동기 코드 예시:

console.log('1');
setTimeout(()=>{
	console.log('2秒后再执行...');
},2000);
console.log('end');

프로그램 실행 후 출력 결과:
1
Ende
2초 후 다시 실행...

요약: 코드는 실행 중에 순차적으로 실행되지만, 콜백 함수가 실행되면 콜백 함수는 비동기 코드 실행 영역에 배치되며, 처음에는 실행되지 않고 코드가 실행되면 순차적으로 실행되어 비동기 코드 실행 영역에 배치됩니다.

동기화된 코드 라인 사례:

for(let i=0;i<10;i++){
	console.log(i);
}
console.log(&#39;end&#39;);

프로그램 실행이 완료된 후 출력 결과:
0123456789
end
요약: 동기 코드, for 루프가 얼마나 오래 실행되든 다음 코드는 실행되기 전에 완료되도록 합니다.

2. 비동기 프로그래밍이 있는 이유는 무엇입니까? Nodejs는 단일 스레드, 비동기 및 비차단이 특징입니다. 코드 논리에 여러 콜백이 포함되면 매우 끔찍한 코드가 나타나며 이는 나중에 유지 관리에 도움이 되지 않습니다.

비동기 프로그래밍의 역할은 효율성을 높이는 것입니다. 요즘에는 프로그램이 점점 더 커지고 CPU와 메모리에 대한 부담도 커지고 있습니다. 비동기를 사용하면 컴퓨터가 동시에 여러 트랜잭션을 처리할 수 있기 때문입니다. 필요합니다.

3. 비동기 프로그래밍에서 발생하는 문제를 처리하는 방법

우리 프로젝트에는 몇 가지 문제가 있습니다. 예를 들어, 값을 얻을 수 없으면 비동기 프로그래밍으로 인해 정의되지 않습니다.

해결 방법: 콜백 함수 중첩, Promise, Wait 및 async 구문 설탕이 동기화됩니다.


이제 폴더에 3개의 txt 파일 1, 2, 3이 있습니다. 세 번째 파일을 직접 읽어야 합니다. 두 번째에는 순서가 어긋날 수 있으므로 비동기 문제를 처리하고 순서대로 실행되도록 해야 합니다.

콜백 함수를 사용하여 코드 중첩:

const fs=require(&#39;fs&#39;)
const path =require(&#39;path&#39;)
let p1=path.join(&#39;1.txt&#39;)
let p2=path.join(&#39;2.txt&#39;)
let p3=path.join(&#39;3.txt&#39;)
fs.readFile(p1,&#39;utf8&#39;,(err,data)=>{
    if(err) throw err
    console.log(data)
    fs.readFile(p2,'utf8',(err,data)=>{
        if(err) throw err
        console.log(data)
        fs.readFile(p3,'utf8',(err,data)=>{
            if(err) throw err
            console.log(data)
        })
    })
})

Promise 코드 사용:

// new promise 的作用:让异步代码马上执行
const fs=require('fs')
function readFile(path){
    return new Promise((resolve,reject)=>{
        fs.readFile(path,'utf8',(err,data)=>{
            resolve(data)
        })
    })
}
let p1=readFile('1.txt')
let p2=readFile('2.txt')
let p3=readFile('3.txt')
p1.then(result=>{
    console.log(result)
    return p2
}).then(result=>{
    console.log(result)
    return p3
}).then(result=>{
    console.log(result)
    return p3
})

Alright Wait 사용 및 비동기 구문 설탕 코드:

const path=require('path')
const fs=require('fs')
let p1=readFile('1.txt')
let p2=readFile('2.txt')
let p3=readFile('3.txt')
var readfile=(path)=>{
    return new Promise((resolve,reject)=>{
        fs.readFile(path,'utf8',(err,data)=>{
            resolve(data)
        })
    })
}

async function exec() {
    await readfile(p1).then(result => console.log(result))
    await readfile(p2).then(result => console.log(result))
    await readfile(p3).then(result => console.log(result))
}
exec()

[권장:

node.js 비디오 튜토리얼

]

위 내용은 NodeJs 비동기 프로그래밍의 의미를 깊이 이해합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제