Promise에서 async/await가 어떻게 작동하는지 이해하려고 노력 중입니다.
으아악 내가 이해한 바에 따르면, Wait는 차단되어야 하는데 위 코드에서는 기본 요소의 사용을 차단하는 것 같습니다 timestamp
返回对象 bl
. 그런 다음 내 함수는 원래 값을 반환하지만 시간 변수는 원래 값 대신 보류 중인 약속으로 설정됩니다. 내가 놓친 게 무엇입니까?
P粉0020233262023-10-20 12:58:06
async
函数始终返回一个 Promise。这就是它报告异步工作完成情况的方式。如果您在另一个async
函数中使用它,则可以使用await
来等待其promise解决,但在非async
함수(일반적으로 최상위 수준 또는 이벤트 핸들러)에서는 Promise를 직접 사용해야 합니다. 예:
...그러나 JavaScript 모듈의 최상위 수준에서 이 작업을 수행하면 이제 모든 최신 환경에서 최상위 모듈 await
을 지원합니다.
(이 Promise가 거부되면 모듈이 로드되지 않습니다. Promise가 실패하더라도 모듈이 의미 있게 작동하는 경우 Promise 거부를 처리하기 위해 try
/catch 中
로 래핑해야 합니다.)
그것은 명시적인 Promise 콜백 용어의 형태로 무언가를 공개할 수도 있고 공개하지 않을 수도 있으며, 이는 JavaScript 엔진이 내부적으로 async
함수를 처리하는 방법에 대한 아이디어를 제공합니다.
몇 가지 중요한 참고 사항:
new Promise
的函数(promise 执行器函数)由 new Promise
동기 호출에 전달합니다.
web3.eth.getBlock
입니다. new Promise
포착되어 Promise 거부로 변환됩니다. then
오류)가 포착되어 거부로 변환됩니다.