多个snmp getsubtree调用导致单个回调

时间:2019-07-05 13:54:04

标签: javascript node.js snmp

我有一个JavaScript代码,可以在一个循环中进行多个snmp.getsubtree调用,但是该回调仅被调用一次。多个回调会折叠成一个吗?

我不是本地的javascript开发人员,所以我不了解所有异步技巧,但是每个调用都不应调用回调吗?

function reportWifiMetrics() {

    getMacAddresses();
    getMetrics( wifi_config.toLog.byClient, parse_ByClient_Metrics);
    getMetrics( wifi_config.toLog.bySsid,   parse_BySSID_Metrics);
}

function getMetrics( metrics, parsefunc ) {

    var mkeys = Object.keys( metrics );
    mkeys.forEach( function (key) {
        var mib = metrics[key];
        snmp_session.getSubtree({oid:toArray(mib), host: wifi_config.host}, function( err, res){
            if (err) { console.error('Error getting metric (' + key + ' fron SNMP - ' + err); }
            else {
                parsefunc(key,res);
            }
        });
    });
}

function parse_BySSID_Metrics( key, raw_data ) {

    raw_data.forEach(function( rec ){
        var ssid_index = rec.oid[rec.oid.length-2];
        var metric     = rec.value;
        var ssidblob   = ssidMap[ ssid_index ];
        ssidblob.metrics[key] = metric;
    });
}

在第一个“ getMetrics”调用中,它循环了四个键,在第二个调用中还循环了四个键。我希望每个回调都会被调用四次,但是parse_ByClient_Metrics仅被调用一次,而parse_BySSID_Metric则永远不会被调用。

0 个答案:

没有答案