异步函数 - 等待不等待承诺
问题描述:
我试图学习异步等待。在此代码 -异步函数 - 等待不等待承诺
const myFun =() => {
let state = false;
setTimeout(() => {state = true}, 2000);
return new Promise((resolve, reject) => {
setTimeout(() => {
if(state) {
resolve('State is true');
} else {
reject('State is false');
}
}, 3000);
});
}
const getResult = async() => {
return await myFun();
}
console.log(getResult());
为什么我收到输出 -
Promise { <pending> }
而是一些价值? getResult()
函数不应该等待myFun()
函数解析它的promise值吗?
答
如果您使用async/await,则您的所有呼叫必须使用Promises或异步/等待。你不能只是奇迹般地从同步调用中获得异步结果。
你最终需要将电话:
getResult().then(response => console.log(response));
或者类似的东西:
(async() => console.log(await getResult()))()
为什么最后异步(带有IIFE)变为同步,但不是我的'的getResult()'方法? –
@hg_git因为它被包装在一个异步IIFE中,有一个等待电话。它不会变成同步的,它只是语法上的糖。 –
我的'getResult()'也有'async'关键字,还有'await'调用。 –