Async/Await: 약속의 미스터리 공개
async/await 기능 영역을 시작할 때 흥미로운 난제에 직면할 수 있습니다. . 비동기 함수는 항상 Promise 객체를 반환하는 것으로 나타나 직접 콘솔 로깅을 시도할 때 혼란을 야기합니다.
이 현상을 더 깊이 파고들어 그 복잡함을 풀어보겠습니다. 모든 비동기 함수는 Promise 패러다임을 준수하며 작업 결과를 캡슐화하는 Promise 객체를 반환합니다. Wait 문은 Promise가 해결되거나 거부될 때까지 함수 실행을 일시 중지하는 수단으로 사용됩니다.
await가 자동으로 Promise를 풀 것이라고 가정할 수도 있지만 사실은 그렇지 않습니다. Wait를 사용하면 함수가 대기한 후 즉시 해결되는 Promise가 반환됩니다. 그러나 실제 결과에 액세스하려면 Wait 또는 .then()을 사용하여 Promise를 명시적으로 풀어야 합니다.
설명을 위해 비동기 요청을 시뮬레이션하는 다음 코드 조각을 고려해 보세요.
const getJSON = async () => { const request = () => new Promise((resolve, reject) => ( setTimeout(() => resolve({ foo: 'bar'}), 2000) )); const json = await request(); return json; };
결과를 콘솔에 직접 기록하려고 시도하면 출력은 Promise가 됩니다.
console.log(getJSON()); // returns Promise
그러나, .then()을 사용하여 Promise를 풀면 예상되는 JSON 개체가 드러납니다.
getJSON().then(json => console.log(json)); // prints { foo: 'bar' }
결론적으로 비동기 함수는 항상 Promise를 반환하고 Wait는 해결될 때까지 실행을 일시 중지할 뿐입니다. 결과를 얻으려면 wait 또는 .then()을 사용한 명시적인 언래핑이 필요합니다. 이 메커니즘은 Promise 모델의 무결성을 보장하고 Promise 결과에 대한 직접 액세스가 허용될 경우 발생할 수 있는 예측할 수 없는 동작을 방지합니다.
위 내용은 Async/Await 함수가 항상 Promise를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!