用dynmac setInterval反应UseEffect

时间:2020-04-26 14:07:29

标签: javascript reactjs

我试图在useEffect react挂钩中设置动态setInterval,因为我不想每x秒调用一次。 由于我正在处理实时视频,因此结束日期可能会在一段时间内发生变化,因此我添加了一个小方法“ onAirRequestInterval”以动态间隔查询API,如下所述:


const onAirRequestInterval = () => {
    const programEndDate = new Date(program?.endTime).getTime();
    const currentDate = Date.now();
    const airRequestInterval = (programEndDate - currentDate) / 2;
    return airRequestInterval > 60000 ? airRequestInterval : 30000;
};

useEffect(() => {
    let interval;
    if (program?.status === ONAIR) {

      interval = setInterval(() => {
        fetchQuery(
          environment,
          onAirProgramsQuery,
          { channelId: program?.channel?.id }, // 'Y2hhbm5lbDpldXJvc3BvcnQtMjAz'
          { force: true }
        ).then(fragmentData => {
          setOnAirProgramsfragmentData(fragmentData);
        });
      }, onAirRequestInterval);
    }
    return () => clearInterval(interval);
  }, [environment, onAirProgramsQuery, program]);

但是我在控制台中出现错误,似乎不起作用。

有人可以帮我吗?

谢谢

0 个答案:

没有答案