【发布时间】:2021-05-29 15:35:00
【问题描述】:
我有功能:
function a(){ setTimeout(()=>{console.log('a')}, 0) }
这个函数在调用栈的最后发送console.log不是吗?
如何编写一个在这个 console.log 之后运行的函数
我发现的唯一方法是以相同的方式在调用堆栈上发送函数
a();
setTimeout(()=>{ console.log('after a'), 0 });
但这对我来说看起来很糟糕。我尝试过承诺,但我可以对'a'函数做出反应,而不是在里面的console.log上。
函数“a”不可编辑
【问题讨论】:
-
接受回调并在您想要的时间调用它:
function a(callback){ setTimeout(()=>{console.log('a'); callback?.()}, 0) },然后是a(() => console.log('after a'));。 -
也可以使用 Promise:
function a(){ return new Promise( resolve => setTimeout(()=>{console.log('a'); resolve()}, 0) ) },然后像a().then(() => console.log('after a'))一样使用它。 -
函数'a'不可编辑
标签: javascript async.js