首页 > 解决方案 > setInterval 奇怪的行为

问题描述

在探索 SSE 时,我发现在我的项目中发生了一些奇怪的事情。我的目标是在某个时间间隔内向浏览器发送一些数据,所以我决定使用该setInterval函数,但我res.write直接将其作为回调传递,而不是将其封闭在匿名中函数。这是我自己为地狱铺平道路的地方。因为它没有按预期工作,也没有提供任何有关该错误的线索。

这是我使用的代码setInterval(res.write,3000,"data:foobar\n\n")

我回来的错误是

    msg._implicitHeader();
        ^

TypeError: msg._implicitHeader is not a function
    at write_ (_http_outgoing.js:650:9)
    at Timeout.write [as _onTimeout] (_http_outgoing.js:629:15)
    at listOnTimeout (internal/timers.js:556:17)
    at processTimers (internal/timers.js:497:7)

但是当将代码包装在匿名函数中时,它会按预期工作。我认为这个错误是由于内部使用的属性res.write发生setInterval冲突或由于传递给的参数绑定造成的setInterval。我不确定。

有人给出它背后的技术细节。

标签: javascriptexpresssetintervalserver-sent-events

解决方案


推荐阅读