Nodejs setInterval 回调问题

Nodejs setInterval callback issue

提问人:ksdev 提问时间:8/8/2023 更新时间:8/8/2023 访问量:40

问:

我在从 setInterval 函数中提取当前时间值时遇到了问题。

这是我的nodejs代码

export const countDownTimer = async (req, res, next) => {
try {
var time = 120;
var resultantTime = '';
let countdown = setInterval(timer, 1000);

    function timer() { 
      let min = Math.floor(time / 60); 
      let sec = time % 60; 
      sec = sec < 10 ? "0" + sec : sec;
     let finalTime = `${min}:${sec}`
     deriveTime(finalTime)
  
      time--;
      if (min == 0 && sec == 0) clearInterval(countdown);
      }

      
     function deriveTime(finalTime){
        resultantTime = finalTime
      }

       console.log("resultantTime:", resultantTime);
        res.status(200).send(resultantTime);

 } catch (error) {
    next(error);
  }

当我在浏览器控制台中检查resultantTime时,它变得未定义。但是,如果我在 deriveTime 函数中检查相同的控制台日志,那么它会给出正确的结果。

我想将这个resultantTime发送到前端,所以我想从setInterval函数中取出这个resultantTime值。请帮忙。

JavaScript 节点 .js 回调 设置间隔

评论

1赞 MWY 8/8/2023
是异步的,当您发送 时,计时器函数尚未运行。所以你无法得到这个值。setInterval resultantTime
0赞 ksdev 8/8/2023
谢谢你的回答。我是否需要使deriveTime函数异步,并在await deriveTime(finalTime)之前添加await
0赞 ksdev 8/8/2023
我使用 npm 包 npmjs.com/package/set-interval-async 正确实现异步函数。尽管如此,我也无法获得结果时间为什么计时器功能不再修女?
0赞 slebetman 8/8/2023
这种缩进给我带来了情感上的伤害

答: 暂无答案