同步执行方法

时间:2018-02-12 10:23:18

标签: node.js express synchronization net-snmp

我的代码中有snmp调用,并且在api调用中执行此操作并需要获取值数组并将其返回给客户端。但我在同步执行这行时面临问题,我的res.json在从session.subtree获取vales之前先执行

    var shelf = new Array();

    function doneCb (error) {
            console.log("donecb");
            console.log("shelf -----",shelf);
    }

    function feedCb (varbinds) {
            console.log("feed cb");
            shelf = [];
        for (var i = 0; i < varbinds.length; i++) {
            if (snmp.isVarbindError (varbinds[i]))
                console.error (snmp.varbindError (varbinds[i]));
            else {
                var temp = varbinds[i].oid.trim(".");
                shelf.push({'id':temp[temp.length-1], 'name':shelfmap[varbinds[i].value.toString()]});
                console.log (varbinds[i].oid + "|" + shelfmap[varbinds[i].value.toString()]);
            }
        }
    }

    router.get('/getShelves/:r',function(req,res){
        shelf = [];
        session.subtree (oid, maxRepetitions, feedCb, doneCb);
        res.json(shelf);
    });

由于feedcb和donecb是net-snmp模块的内部方法,我无法重写函数来返回值,我尝试使用sync和async瀑布模型,但它不能正常工作,kinldy有人建议某种方式在节点JS中同步执行该方法。提前谢谢。

0 个答案:

没有答案