有人可以告诉我为什么await
在这里不工作吗?
const Web3 = require('web3');
web3 = new Web3(new Web3.providers.HttpProvider("http://<ip>:8545"));
let accounts = (async () => await web3.eth.getAccounts())();
// await was not working, here I get a promise
console.log(accounts);
// if I wait with a timeout I get my accounts
setTimeout(() => console.log(accounts), 5000);
答案 0 :(得分:3)
您的console.log必须位于内联异步函数中。
(async () => {
accounts = await web3.eth.getAccounts()
console.log(accounts);
}
)();
答案 1 :(得分:1)
它不是那样工作的。异步函数返回一个Promise。异步功能之外的console.log不会等待等待。您只能在异步函数中停止代码。
async function getData() {
const answer = await web3.eth.getAccounts()
console.log(answer) /* this console.log will be wait */
return answer
}
getData().then(answer => console.log(answer))
如果那样工作(将代码保存在函数外部),它将停止浏览器上的所有进程(例如警报功能),并且用户也必须等待。