Javascript NodeJs setTimeout clearTimeout的唯一ID
我有一个用于安排任务的NodeJS应用程序,该任务用于创建预订,预订可以在执行任务之前取消,可能会有数十万个任务(例如,一分钟内创建67个任务) 我的方法是调用此函数: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));
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