关于 nodejs 计时器的文档说 setTimeout 将返回一个 timeoutId http://nodejs.org/api/timers.html#timers_cleartimeout_timeoutid
当我在网络浏览器中使用 javascript 时,我会得到一个整数作为返回值。
var b = setTimeout(function(){console.log("Taco Bell")})
// b = 20088
当我使用节点并做同样的事情时,回报是
var b = setTimeout(function(){console.log("Taco Bell")})
// { _idleTimeout: 60000,
// _idlePrev:
// { _idleNext: [Circular],
// _idlePrev: [Circular],
// ontimeout: [Function] },
// _idleNext:
// { _idleNext: [Circular],
// _idlePrev: [Circular],
// ontimeout: [Function] },
// _onTimeout: [Function],
// _idleStart: Wed Jan 30 2013 08:23:39 GMT-0800 (PST) }
我想做的是将 setTimeout 整数存储到 redis 中,然后再将其清除。所以我尝试做这样的事情
var redis = require('redis');
var redisClient = redis.createClient();
var delay = setTimeout(function(){console.log("hey")}, 20000);
var envelope = { 'body' : 'body text', 'from' : 'test@test.com', 'to' : 'test@test.com', 'subject' : 'test subject', 'delay' : delay };
redisClient.hset("email", JSON.stringify(envelope), redis.print);
但后来我从 JSON.stringify 收到一个关于无法处理圆形对象的错误。有没有办法让 setTimeout 返回 ID 或将足够的对象存储到 redis 以便以后清除?