考虑以下代码:
const getName = () =>
new Promise(resolve => setTimeout(resolve, 1000, 'xxx'));
f = async () => {
let name = await getName();
console.log(name);
return name;
}
console.log(f());
函数会在打印“name”之前等待,但它仍然会返回promise而不是结果,并且不会在函数外打印正确的输出。有没有办法解决这个问题?
答案 0 :(得分:2)
您需要为 await
f()
。下面是一个例子:
const getName = () =>
new Promise(resolve => setTimeout(resolve, 1000, 'xxx'));
const f = async () => {
const name = await getName();
console.log("1. "+name);
return name;
}
const run = (async () => {
const ret = await f();
console.log("2. "+ret);
})();
答案 1 :(得分:1)
你需要等待f函数返回的promise。这就是为什么它打印承诺而不是结果。
console.log(await f());