function foo()
{
let a = 5;
setTimeout(function(){a = 6;}, 1000);
return a;
}
如何为foo
返回6?我正在使用的异步函数实际上来自框架,而不是setTimeout
。
答案 0 :(得分:1)
按现状,您无法使foo
返回给定a
的回调中设置的setTimeout
的值,因为执行return语句时尚未调用超时回调函数。
您可以做的是使函数async
并将对setTimeout
的调用包装在Promise中,然后等待该诺言,以允许调用setTimeout
回调,然后最终返回a
。
async function foo() {
let a = 5;
await new Promise(resolve => {
setTimeout(function() {
a = 6;
resolve();
}, 1000);
});
return a;
}
(async () => {
console.log("running...")
console.log(await foo());
})()