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