JavaScript에서 비동기식/대기 모드 사용 및 이해
2248 단어 javascript비동기기다리다
JavaScript에서 비동기식/대기 모드 사용 및 이해
프로그래밍 언어의 임의의 키워드는 모두 의미가 있으니, 우리는 먼저 글자의 뜻으로 이해합시다.
1.async
async는'비동기'의 약자입니다. async 키워드를 가진 함수입니다. 비동기 함수를 설명하고, 반환값은promise 대상입니다. 만약에 async 키워드 함수가promise가 아니라면 자동으로 Promise를 사용합니다.resolve () 포장.
async function test() {
return 'hello word'
}
test();
위의 코드를 실행하면 결과가 다음과 같습니다.2.await
await는 async wait의 약자라고 할 수 있다.그래서 async가 하나의 기능이 비동기적이라는 것을 설명하는 데 사용되고, await는 비동기적인 방법이 실행되기를 기다리는 데 사용된다는 것을 잘 이해할 수 있을 것이다.
만약 그것이 Promise 대상이 아니라면, await 표현식의 연산 결과는 그것이 기다린 것이다.
만약 그것이 Promise 대상일 때까지 기다린다면, await는 바쁘다. 뒤에 있는 코드를 막고 Promise 대상resolve를 기다린 다음에resolve의 값을 얻어서 await 표현식의 연산 결과로 삼을 것이다.
다음 코드를 볼게요.
function test() {
return new Promise(resolve => {
setTimeout(() => resolve("hello word"), 2000);
});
}
const result = test();
console.log(result.then((val)=>{console.log(val)}));
console.log(' ')
편집기 편집기 코드 실행 순서로 정리합니다.1. 우선 Promise 객체를 반환하는 방법을 정의합니다.then () 함수는 2초 후에 호출에 성공했습니다.
2. 다음은 test () 함수를 실례화합니다.
3.result 대상의 then () 함수를 호출하여 반환값을 수신합니다. 여기는 비동기적입니다.
4. 인쇄 로그 끝
우리는 코드를 실행하여 결과를 본다
"끝"을 먼저 인쇄하고 나서야 인쇄하는 "hello word"를 보았습니다. 이것이 바로 비동기입니다. 코드를 개조합니다
function test() {
return new Promise(resolve => {
setTimeout(() => resolve("hello word"), 2000);
});
}
const result = await test();
console.log(result);
console.log(' ')
await 키워드로test () 함수를 연결하여 이번 반환 결과를 보십시오"hello word"를 인쇄한 후에야 "끝"을 인쇄하는 것을 발견했습니다. 테스트 () 로 인한 장애, console.log('끝')은 2초 후에 실행됩니다.
장단점을 말씀드릴게요.
장점:promise에 비해async/await처리then의 호출 체인은 코드가 매우 뚜렷하고 거의 동기화 코드와 같다.
단점:await를 남용하면 성능 문제를 초래할 수 있습니다.await가 코드를 막기 때문입니다.
총결산
자바스크립트에서의 비동기/기다림의 용법과 이해에 관한 이 글을 소개합니다. 자바스크립트의 비동기/기다림의 용법과 관련된 더 많은 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개별 마크다운 블로그 페이지 만들기 - 13부이를 통해 개별 마크다운 기반 블로그 게시물 작성을 시작할 수 있습니다! 이 기사를 따르려면 을 시작점으로 사용하십시오. blog 페이지 디렉토리에 동적 페이지를 생성하여 시작할 수 있습니다. 이 파일[slug].j...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.