의미:
비동기가 있으면 반드시 동기화도 있습니다
존재하는 모든 콜백 함수는 비동기 코드입니다
먼저 동기 코드를 실행하고, 비동기 코드를 본 후 비동기 코드를 비동기 코드 실행 영역에 넣습니다(먼저 실행되지 않음)
계속 동기 코드 실행이 모두 완료되면 비동기 코드를 실행합니다.
비동기 코드 예시:
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('end');
프로그램 실행이 완료된 후 출력 결과:
0123456789
end
요약: 동기 코드, for 루프가 얼마나 오래 실행되든 다음 코드는 실행되기 전에 완료되도록 합니다.
비동기 프로그래밍의 역할은 효율성을 높이는 것입니다. 요즘에는 프로그램이 점점 더 커지고 CPU와 메모리에 대한 부담도 커지고 있습니다. 비동기를 사용하면 컴퓨터가 동시에 여러 트랜잭션을 처리할 수 있기 때문입니다. 필요합니다.
3. 비동기 프로그래밍에서 발생하는 문제를 처리하는 방법
이제 폴더에 3개의 txt 파일 1, 2, 3이 있습니다. 세 번째 파일을 직접 읽어야 합니다. 두 번째에는 순서가 어긋날 수 있으므로 비동기 문제를 처리하고 순서대로 실행되도록 해야 합니다.
콜백 함수를 사용하여 코드 중첩:
const fs=require('fs') const path =require('path') let p1=path.join('1.txt') let p2=path.join('2.txt') let p3=path.join('3.txt') fs.readFile(p1,'utf8',(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 중국어 웹사이트의 기타 관련 기사를 참조하세요!