【发布时间】:2018-10-09 10:53:53
【问题描述】:
我正在使用带有 express 的 NodeJs,我想将 setTimeout 的 id 存储到数据库中,以便以后可以使用 clearTimeout 我目前正在为此使用以下代码
var timerId = setTimeout(function(){
console.log(id);
}, 100)
clearTimeout(timerId)
这段代码工作正常,但 timerId 包含一个对象,这就是为什么我无法将它存储在数据库中是否有任何其他方法可以这样做,或者是否有方法转换 MongoDB 可接受的对象
这是我在打印 timerId 时得到的对象
Timeout {
_called: false,
_idleTimeout: 5000,
_idlePrev:
TimersList {
_idleNext: [Circular],
_idlePrev:
Timeout {
_called: false,
_idleTimeout: 5000,
_idlePrev: [Circular],
_idleNext: [Circular],
_idleStart: 5876,
_onTimeout: [Function],
_timerArgs: undefined,
_repeat: null,
_destroyed: false,
[Symbol(asyncId)]: 252,
[Symbol(triggerAsyncId)]: 250 },
_unrefed: false,
msecs: 5000,
nextTick: false,
_timer: Timer { _list: [Circular] } },
_idleNext:
Timeout {
_called: false,
_idleTimeout: 5000,
_idlePrev: [Circular],
_idleNext:
TimersList {
_idleNext: [Circular],
_idlePrev: [Circular],
_unrefed: false,
msecs: 5000,
nextTick: false,
_timer: [Timer] },
_idleStart: 5876,
_onTimeout: [Function],
_timerArgs: undefined,
_repeat: null,
_destroyed: false,
[Symbol(asyncId)]: 252,
[Symbol(triggerAsyncId)]: 250 },
_idleStart: 6029,
_onTimeout: [Function],
_timerArgs: undefined,
_repeat: null,
_destroyed: false,
[Symbol(asyncId)]: 316,
[Symbol(triggerAsyncId)]: 0 }
而我想要做的是我拥有三个 API
- 加入请求
- 接受请求
- 拒绝请求
用户将加入请求发送到加入请求 api,然后我在数据库上维护一个数组,其中包含所有加入请求,然后管理员接受并拒绝来自该日志的请求,但我想要的是如果管理员不接受或拒绝请求在一段时间后被自动拒绝的请求
为了做这件事,我在加入请求 api 上运行 settimeout,如果管理员接受或拒绝请求,我清除 settimeout,如果它不接受或拒绝请求,则我的 settimeout 运行并自动拒绝该请求
但问题是,为了清除 settimeout,我需要 settimeout id,但我无法保存,请告诉我是否有任何方法可以实现这一点
提前致谢
【问题讨论】:
-
我很确定还有另一种更好的方法可以做任何你想做的事情,而不需要将 setTimeout 的 id 存储在数据库中。
-
你能给我任何建议或告诉我一些更好的方法吗
-
我建议解释你的问题以及你想做什么。
-
我在上面解释了我的问题,请给我一个方法来做到这一点
-
不,您已经问过如何执行您已经决定的问题的解决方案。您尝试通过 API 启动和停止计时器肯定是有原因的,如果您解释了您尝试实现的基本目标,我们可以为您提供更好的帮助。
标签: javascript node.js mongodb settimeout