我希望它在找到一分钟后完成。显然这可能需要一分钟的时间:
function syncToMinute(){
let proceed = true;
while(proceed){
const date = new Date();
let seconds = date.getSeconds();
if( seconds === 0){
console.log('Minute Found');
proceed = false;
} else {
// console.log(seconds);
}
}
}
用法是:
syncToMinute().then(() => {
anotherFunc();
})
最佳答案
您可以计算距离下一分钟还剩多少秒(增量),然后设置
setTimeout
解决该增量中的 Promise
。
const syncToMinute = () => {
const delta = 60 - (new Date()).getSeconds()
return new Promise(resolve => setTimeout(resolve, delta * 1000))
}
syncToMinute()
.then(() => {
console.log('Minute')
})
郑重声明,一个while
循环;就像你在 OP 中一样,无论事件循环是否包含在 Promise 中,它都会卡住事件循环。将某些内容包装在 Promise 中并不会使它在单独的线程中运行。
关于javascript - 我怎样才能 promise 这个功能,这样它就不会阻止我的服务器启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59159202/