如何正确解决诺言?

时间:2018-12-22 13:59:29

标签: javascript promise web3

有人可以告诉我为什么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);

2 个答案:

答案 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))

如果那样工作(将代码保存在函数外部),它将停止浏览器上的所有进程(例如警报功能),并且用户也必须等待。