现在有这样一个需求,一个技能的buff,需要之后每秒触发一次伤害,持续几秒
代码基本是这样的
var eventEmitter = new events.EventEmitter();
eventEmitter.emit(msgType, eventData);
eventEmitter.on(ADDBUFF, function(eventData) {addBuff(eventData);});
function addBuff(eventData) {
var intervalObj = setInterval(function(gamebuff, targetId, room, eventData)
{
var continueBuff = validateBuff(gamebuff);
if (continueBuff) {
console.log('trigger buf on ', Date.now());
broadcastTriggerBuff(gamebuff, targetId, room, eventData);
} else {
clearInterval(intervalObj);
Buff.resetBuff(gamebuff);
}
}, Const.buffInterval);
gamebuff.intervalObj = intervalObj;
broadcastAddBuff(targetId, useridSocketMap, room, gamebuff.id);
现在遇到的问题是setInterval(function(gamebuff, targetId, room, eventData) 里的
变量都是undefined了,我以为这个会留在这个闭包函数的上下文里。
请问下怎样解决这个问题?
之前找过node-cron/node-kue,但是没想清楚怎么把两个结合在一起做成这种持续
一段时间,并能根据给定的条件来终止
提前谢谢了
--
修改:companycy FROM 202.106.59.*
FROM 202.106.59.*