闭包和异步node.js函数

 gaoming1009_422 发布于 2023-02-11 16:58

所有,

试图在node.js上下文(异步调用)中了解闭包.

我有以下代码:

timer = setInterval(pollOID, 1000);

function pollOID() {
    for (channel in channels) {
        session.get({ oid: channels[channel].oid }, function (varbinds) {
               console.log("The " + channels[channel].name + " is " + varbinds);
        });
    }
}

该代码每秒使用setInterval回调中的循环轮询路由器以获取SNMP数据,以向路由器查询多个SNMP实体.session.get函数有一个异步回调来处理来自路由器的结果.

SNMP位工作正常,我的问题是如何在会话异步回调中保持循环变量通道的值.

我得到以下结果:

The Download Attenuation is 7.5
The Download Attenuation is 361600
The Download Attenuation is 60

因此,当函数从路由器返回正确的值时,循环变量通道正在针对session.get的每次调用进行更改.我的问题是channel [channel] .name使用channel的当前值,当回调返回时,循环结束并且channel为2(第三个循环,即名称字符串"download attenuation").所以我需要将session.get回调中的channel值保持为调用回调时的值,以便在session.get回调中使用正确的channels [channel] .name.

我知道我必须使用一个闭包,但在尝试了许多不同的方法后,我无法正常工作.任何线索指向我正确的方向?谢谢!

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有