首页 > 解决方案 > 如何在延迟后立即执行 setTimeout 函数?

问题描述

我想在延迟后执行 setTimeout,而不是在所有其他函数都执行后等待从消息队列中调用它。请参考以下代码:

let test = function(){ console.log('test') }
setTimeout(() => console.log('hi'), 2000)

test();
test();
test();
.
.
.
.
this code takes more than 2 seconds to execute;

如何在 2 秒后而不是最后获得 setTimeout?

标签: javascript

解决方案


你可能不需要setTimeout. 取而代之的是返回一个promisefromtest函数并在其中执行其余的事情,这些事情then只会test在解决一次

let test = function() {
  return new Promise(function(resolve, reject) {
    console.log('test');
    resolve('test executed')
  })
}


test().then(function(data) {
  console.log(data)
});


推荐阅读