Javascript NodeJs setTimeout clearTimeout的唯一ID

Javascript NodeJs setTimeout clearTimeout的唯一ID,javascript,node.js,scheduled-tasks,settimeout,cleartimeout,Javascript,Node.js,Scheduled Tasks,Settimeout,Cleartimeout,我有一个用于安排任务的NodeJS应用程序,该任务用于创建预订,预订可以在执行任务之前取消,可能会有数十万个任务(例如,一分钟内创建67个任务) 我的方法是调用此函数: runOnDate = function (dateIn){ console.log('scheduling') var now = (new Date()).getTime(); var booking = setTimeout(startBooking , (dateIn - now));

我有一个用于安排任务的NodeJS应用程序,该任务用于创建预订,预订可以在执行任务之前取消,可能会有数十万个任务(例如,一分钟内创建67个任务)

我的方法是调用此函数:

runOnDate = function (dateIn){
    console.log('scheduling')
    var now = (new Date()).getTime();
    var booking = setTimeout(startBooking , (dateIn - now));

    //Lets try to catch the ID number of booking
    console.log(booking) // Shows [object Object]
    console.log(booking.timeoutID) // Shows undefined
}
如果我必须取消其中一个
setTimeout
,我知道
setTimeout
会返回一个
Number
,用于
cleartimout()


但是我似乎无法获得数字,有没有一种方法可以创建一个具有唯一ID的计时器我可以用于
clearTimeout()
或其他方法来调用特定
setTimeout
上的
clearTimeout

clearTimeout
应该传递从
setTimeout
返回的任何内容<代码>节点不会为其计时器返回一个
数字
,而是返回一个
对象
。因此,在本例中,您应该通过将对象传递给它来执行
clearTimeout(booking)
。在浏览器中,它返回一个数字

setTimeout
/
clearTimeout
是浏览器API的一部分,不是JS标准,因此不要求在节点中提供它们,更不用说它们具有相同的参数/返回值。在
节点中
计时器生成一个对象,因为计时器可以有方法


根据你所说的,我也建议你考虑使用某种任务队列,而不是启动大量的定时器。您最好维护一个任务队列,并在开始时间到达时通过维护一个计时器将任务从队列中拉出。

clearTimeout
应该传递从
setTimeout
返回的任何内容<代码>节点不会为其计时器返回一个
数字
,而是返回一个
对象
。因此,在本例中,您应该通过将对象传递给它来执行
clearTimeout(booking)
。在浏览器中,它返回一个数字

setTimeout
/
clearTimeout
是浏览器API的一部分,不是JS标准,因此不要求在节点中提供它们,更不用说它们具有相同的参数/返回值。在
节点中
计时器生成一个对象,因为计时器可以有方法


根据你所说的,我也建议你考虑使用某种任务队列,而不是启动大量的定时器。您最好维护一个任务队列,并在开始时间到达时通过维护一个计时器将任务从队列中拉出。

clearTimeout
应该传递从
setTimeout
返回的任何内容<代码>节点不会为其计时器返回一个
数字
,而是返回一个
对象
。因此,在本例中,您应该通过将对象传递给它来执行
clearTimeout(booking)
。在浏览器中,它返回一个数字

setTimeout
/
clearTimeout
是浏览器API的一部分,不是JS标准,因此不要求在节点中提供它们,更不用说它们具有相同的参数/返回值。在
节点中
计时器生成一个对象,因为计时器可以有方法


根据你所说的,我也建议你考虑使用某种任务队列,而不是启动大量的定时器。您最好维护一个任务队列,并在开始时间到达时通过维护一个计时器将任务从队列中拉出。

clearTimeout
应该传递从
setTimeout
返回的任何内容<代码>节点不会为其计时器返回一个
数字
,而是返回一个
对象
。因此,在本例中,您应该通过将对象传递给它来执行
clearTimeout(booking)
。在浏览器中,它返回一个数字

setTimeout
/
clearTimeout
是浏览器API的一部分,不是JS标准,因此不要求在节点中提供它们,更不用说它们具有相同的参数/返回值。在
节点中
计时器生成一个对象,因为计时器可以有方法


根据你所说的,我也建议你考虑使用某种任务队列,而不是启动大量的定时器。您最好维护一个任务队列,并在开始时间到达时通过维护一个计时器将任务从队列中移除。

我不明白,为什么您需要数字,只需执行
clearTimeout(booking)
,如果您有许多引用,请使用数组或对象来存储它们。booking应该是一个数字,不是一个物体。谢谢克里斯蒂娜,我的错!除了
clearTimeout
我不明白,你为什么需要这个数字,只要做
clearTimeout(booking)
,如果你有很多引用,就用数组或对象来存储它们。booking应该是一个数字,而不是一个对象。谢谢克里斯蒂娜,我的错!除了
clearTimeout
我不明白,你为什么需要这个数字,只要做
clearTimeout(booking)
,如果你有很多引用,就用数组或对象来存储它们。booking应该是一个数字,而不是一个对象。谢谢克里斯蒂娜,我的错!除了
clearTimeout
我不明白,你为什么需要这个数字,只要做
clearTimeout(booking)
,如果你有很多引用,就用数组或对象来存储它们。booking应该是一个数字,而不是一个对象。谢谢克里斯蒂娜,我的错!除了
cleartimout