我正在通过编写用于管理飞利浦色调灯的应用程序来学习nodejs,但是nodejs的工作方式存在问题。
我有一个应该获取所有灯光ID的函数:
id = [];
function getLightsId() {
args = {
path: {
"username": "myusername"
}
};
client.registerMethod("getLightState", "http://192.168.0.10/api/${username}/lights/", "GET");
client.methods.getLightState(args, function (data, response) {
for (key in data) {
id.push(key);
}
});
}
问题是,每当我要使用id数组时,它都是空的,因为nodejs并未处理getLightsId回调函数。
ps:我正在使用node-rest-client与我的API进行交互。
好了,它处理了您的回调,只是该函数是异步的。这意味着当您稍后尝试使用该id
变量时,它仍在上面的回调中进行处理。您需要传递另一个回调并将id
变量填充后传递给该回调:
function getLightsId(callback){
args ={
path:{"username":"myusername"}
};
client.registerMethod("getLightState", "http://192.168.0.10/api/${username}/lights/", "GET");
client.methods.getLightState(args, function(data,response){
var id = [];
for(key in data){
id.push(key);
}
callback(id);
});
}
您会这样称呼:
getLightsId(function(idArray) {
console.log(idArray); //here they are
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句