将额外参数发送到处理程序

时间:2018-03-22 22:57:18

标签: node.js

基本上我有这个

CSGOCli.playerProfileRequest(CSGOCli.ToAccountID(userId));

但我想在事件监听器中获得一些我想要的额外信息。所以我想我可以改成它:

CSGOCli.playerProfileRequest(CSGOCli.ToAccountID(row.steam64ID), "checkRank", myData[0]);

这是现在的事件监听器:

CSGOCli.on("playerProfile", function(profile) {

所以我猜它必须看起来像这样:

CSGOCli.on("playerProfile", function(profile, eventType, userData) {

现在处理这些函数的处理程序是这样的:

CSGO.CSGOClient.prototype.playerProfileRequest = function(accountId, even_type, my_data req_level, callback) {
callback = callback || null;
if (!this._gcReady) {
    if (this.debug) {
        util.log("GC not ready");
    }
    return null;
}

if (this.debug) {
    util.log("Sending player profile request");
}

var payload = new protos.CMsgGCCStrike15_v2_ClientRequestPlayersProfile({
    account_id: accountId, 
    request_level: req_level || 32
});

this._gc.send({msg:CSGO.ECSGOCMsg.k_EMsgGCCStrike15_v2_ClientRequestPlayersProfile, proto: {}}, payload.toBuffer(), callback);

};

var handlers = CSGO.CSGOClient.prototype._handlers;

handlers[CSGO.ECSGOCMsg.k_EMsgGCCStrike15_v2_PlayersProfile] = function onPlayerProfileResponse(message) {
    var playerProfileResponse = protos.CMsgGCCStrike15_v2_PlayersProfile.decode(message);

    if (this.debug) {
        util.log("Received player profile");
    }
    this.emit("playerProfile", playerProfileResponse, eventType, userData);
};

就像你可以看到的那样,在最后一行" this.emit"我已经改变了我想要它的样子,但现在这是我的问题所在的地方。我怎么能编辑这个处理程序,所以在最后一个发射器中它将从最后一个函数发送我的信息。

如果我在这里不清楚,我很抱歉。

编辑:

仅使用全局变量解决。 所以:

var event_type = null; var myData = null;

不编辑处理程序。 然后在函数中设置变量,稍后您可以在事件侦听器中使用它。 这不是一个非常有效的解决方案,但它对我有用。

0 个答案:

没有答案