第一篇文章,但感谢所有人的所有信息!
关于这个问题.我有一些代码,我试图迭代JSON文件并对数组中的每个对象执行HTTP Get Request.问题似乎出现在我执行http get请求时,它不是按顺序执行,也不是完成.它在我的API大约6-9次调用后挂起.
示例JSON:
[ { "Name": "ActClgStpt", "Address": 326, "Slot": 1 }, { "Name": "ActHtgStpt", "Address": 324, "Slot": 1 }, { "Name": "AdvanceCool", "Address": 21, "Slot": 1 } ]
迭代JSON:
sedona.jsonInputAddress('Unit1GWRenton', logMe); function logMe() { for(var i in config) { var name = config[i].Name; var address = config[i].Address; var slot = config[i].Slot; console.log(name + " " + address + " " + slot); sedona.collectValues("192.168.101.14", 2001, config[i].Name, config[i].Address, config[i].Slot,function(){console.log("Done")}) } }
我在API调用的每个循环上执行的函数的副本.我有一个回调设置,但我认为我可能没有正确设置它:
collectValues:function(site,port,name,address,slot,callback){ /* Build Scrape Constructor */ var url = 'http://' + (site) + ':' + (port) + '/twave/app/' + (address); /* Slice out Unit # */ unitNumber = port.toString().slice(2, 4); /* Create slotid */ var slotmaker = "slot" + (slot); /* Get ISO Timestamp */ var dt = new Date(); var isoDate = dt.toISOString(); isoTime = isoDate.slice(0,19).replace('T', ' ').concat('.000000+00:00'); /* Make API Call */ request.get({ agent: false, url: url, json: true }, function response (error, response, body) { if (!error && response.statusCode === 200) { // Grab Point Name pointname = name; // Grab Point Value var value = body.slots; var slot = value[slotmaker]; slotvalue = slot.value; // Testing Logs console.log(isoTime + " " +pointname + " " + slotvalue); callback() } }); }
挂起的控制台日志示例:
ActClgStpt 326 1 ActHtgStpt 324 1 AdvanceCool 21 1 AdvanceDewEnable 462 1 CO2Sensor 455 1 CO2Stpt 257 1 CTRange 14 6 ComfortStatus 328 1 CompAllow 167 1 Cool1Spd 83 1 Cool2Spd 84 1 CoolCall1 314 2 CoolCall2 315 2 CoolCmd1 109 1 CoolCmd2 110 1 DCVMaxVolume 260 2 DCVResponse 502 2 SaTemp 423 1 DaTempLimit 193 2 Damper 387 1 DriveFaultCode 123 4 ESMEconMin 175 1 ESMMode 8 1 EconDewEnable 464 1 EconMode 96 1 EconTest 496 1 FanCall 78 1 FanPower 491 1 FanSpeed 492 1 FanStatus 135 1 FullSpd 38 1 Heat1Spd 31 1 Heat2Spd 32 1 HeatCall1 316 2 HeatCall2 317 2 HeatCmd1 69 1 HeatCmd2 70 1 HighAlarmStpt 62 1 HighAlertStpt 61 1 LowAlarmStpt 59 1 LowAlertStpt 58 1 OSAVolume 493 1 OaTemp 457 1 OccClgStpt 247 1 OccHtgStpt 246 1 Occupied 313 1 OptimumStartCommand 233 1 OverrideTime 348 1 PBStatus 221 1 PowerExCmd 107 1 PowerExStpt 188 1 RaTemp 456 1 ResetDrive 212 1 ServiceSwitch 361 5 SoftSwitch 310 4 SpaceTemp 490 1 StdEconMin 176 1 StdEconStpt 307 1 StptAdj 291 1 StptAdjRange 269 1 UnitAmps 454 1 UnitHealth 276 2 UnoccClgStpt 268 1 UnoccHtgStpt 258 1 VentMode 400 2 VentSpd 30 1 2016-01-04 16:40:15.000000+00:00 ActClgStpt 73.000000 Done 2016-01-04 16:40:15.000000+00:00 UnitAmps 5.406000 Done 2016-01-04 16:40:15.000000+00:00 CoolCmd2 false Done 2016-01-04 16:40:15.000000+00:00 ActHtgStpt 68.000000 Done
你认为我可以在代码中改进的任何东西都会很棒.在Node上每天都在学习!