【发布时间】:2018-12-22 14:40:21
【问题描述】:
我试图了解 async/await 如何与 Promise 一起工作。
代码
async function latestTime() {
const bl = await web3.eth.getBlock('latest');
console.log(bl.timestamp); // Returns a primitive
console.log(typeof bl.timestamp.then == 'function'); //Returns false - not a promise
return bl.timestamp;
}
const time = latestTime(); // Promise { <pending> }
问题
据我了解,await 应该是阻塞的,并且在上面的代码中,它似乎会阻塞返回带有原始 timestamp 的对象 bl。然后,我的函数返回原始值,但是时间变量设置为待处理的承诺而不是该原始值。我错过了什么?
【问题讨论】:
-
这就是异步函数的作用——阅读spec
-
await should be blockingno - javascript 中的阻塞代码是一个“坏主意”™,async/await 与阻塞无关 -
Every
async function返回一个承诺,这样你就可以在其中await其他承诺,这就是重点 -
这能回答你的问题吗? async/await implicitly returns promise?
标签: javascript promise async-await primitive