use*_*569 13 javascript settimeout redis node.js
我setTimeout在Node.js中使用它似乎与客户端的行为不同setTimeout,因为它返回一个对象而不是一个数字.我想将它存储在redis中,但由于redis只存储字符串,我需要将对象转换为字符串.但是,使用JSON.stringify抛出循环引用错误.如果我希望能够从redis中获取并调用它,如何将此对象存储在redis中clearTimeout?
您无法将对象存储在 Redis 中。该setTimeout方法返回一个Handler(对象引用)。
一种想法是在内存中创建自己的关联数组,并将索引存储在 Redis 中。例如:
var nextTimerIndex = 0;
var timerMap = {};
var timer = setTimeout(function(timerIndex) {
    console.log('Ding!');
    // Free timer reference!
    delete timerMap[timerIndex];
}, 5 * 1000, nextTimerIndex);
// Store index in Redis...
// Then, store the timer object for later reference
timerMap[nextTimerIndex++] = timer;
// ...
// To clear the timeout
clearTimeout(timerMap[myTimerIndex]);