如何解决如何对设置超时的功能做出反应
function a(){ setTimeout(()=>{console.log('a')},0) }
我发现的唯一方法是以相同的方式在调用堆栈的 of 上发送函数
a();
setTimeout(()=>{ console.log('after a'),0 });
但对我来说看起来很糟糕。我尝试过承诺,但我可以对“a”函数做出反应,而不是在里面的 console.log 上。
函数“a”不可编辑
解决方法
您可以使用“回调”,这是对 a( ) 函数的另一个函数的引用。示例:
function yourFunctionToBeRunnedAfter(){
..
..
}
function a(callback){
setTimeout(()=>{
console.log('a');
calback(); // ==> here is your function execution.
},0);
}
a(yourFunctionToBeRunnedAfter);
如果您有参数要传递给 callback() 调用,则可以使用 apply() 或 call() 或 bind()或 the spread operator (...) 示例:
function a(callback,...params){ // ... is the spread operator
setTimeout(()=>{
console.log('a');
callback([...params]); // ==> here is your function execution by spreading your params to the callback call.
},0);
}
a(yourFunctionToBeRunnedAfter,1,2,3);
,
您需要使用承诺。我建议使用 async-await,但这实际上取决于您的偏好。
function a () {
return new Promise(resolve => {
setTimeout(() => {
console.log('a')
resolve()
},0)
})
}
a().then(() => console.log('after a'))
如果您需要知道超时何时结束,我建议您创建一个辅助函数:
const wait = (time) => new Promise(r => setTimeout(r,time))
然后你可以像这样使用它:
(async () => {
console.log('Hello')
await wait(1000) // wait 1 second
console.log('Hello a second later')
})()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。