현재 async/await의 개념을 javascript에서 탐색 중입니다. 비동기 함수가 향후에 해결할 것으로 예상되는 약속을 반환하고 차단하지 않는다는 것을 알고 있습니다. 코드의 자연스런 실행. 자바 스크립트의 비동기 실행을 테스트하기 위해 작성한 코드가 있습니다.()비동기 함수 내부의 코드가 다음 코드 앞에 실행됩니다.
첫 CONSOLE.LOG 1
이 두 번째 비동기 함수가 호출 인쇄 :
console.log("1") async function asyncFunc(){ for(i=0;i<10000000;i++){ } console.log("3") } asyncFunc().then(()=>{console.log('4')}); console.log("2");
I 코드를 제외하고
는 다음과 같은 방식으로 실행됩니다. 비동기 코드가 블로킹 (non blocking)이기 때문에 마지막 console.log()가 실행되어 콘솔에 2를 출력합니다.비동기 함수의 console.log()가 실행되고 콘솔에 3이 인쇄됩니다.
마지막 약속 해결 및 CONSOLE.LOG()
then
내부 실행되고됩니다 인쇄4. 그래서 예상 출력 : 1,2,3,4는
그러나 실제로 나는 출력을 얻을 1,3,2,4로.
는 왜이 같은 행동이 아닌 방법으로 내가 그것을 실행이 완료 될 때까지
aync 키워드는 실제로 불행히도 async 함수에서 코드를 실제로 만들지 않습니다. –
함수를 강제로 비동기 적으로 실행하려면'await Promise.resolve()'를 함수의 첫 번째 줄에 추가하십시오. – Brandon