javascript - 我怎样才能 promise 这个功能,这样它就不会阻止我的服务器启动?

标签 javascript time promise

我希望它在找到一分钟后完成。显然这可能需要一分钟的时间:

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/

相关文章:

javascript - PHP持久登录不用担心窃取cookie

javascript - 将输入类型文件 (HTML) 转换为 JavaScript 并使用 PHPmailer 发送电子邮件

javascript - 在同一函数中解决 promise 后返回 promise

javascript - WinJS Promise 进度函数未执行

javascript - AngularJS:如何有条件地应用 View 动画?

javascript - MongoDB:如何返回 JSON 中的特定字段和特定子文档

mysql - 舍入时间戳列以使其涵盖更大的时间段

python - 我怎样才能优化这个Python代码的时间

r - 删除所有小于指定值的时间

javascript - 带有 iron-ajax 响应的 promise