我在 nodejs 中有以下代码:
const unifi = require('node-unifi');
const controller = new unifi.Controller(IP_ADDRESS, 8443);
function login(apiCall) {
controller.login(USERNAME, PASSWORD, function (err) {
if (err) {
console.log('ERROR: ' + err);
return;
}
apiCall();
});
}
function getAllClients(site) {
login(function () {
controller.getClientDevices(site, (res, data) => {
console.log(data);
});
});
}
getAllClients('siteid');
在原始调用中,任何函数都需要在 login() 中调用,因此只能在登录时调用。 当我调用函数 getAllCients(siteID) 时,我在 console.log 中得到了想要的结果。但是为了上帝的爱,我无法从另一个文件中的函数返回结果,我需要该函数。总是未定义。
我假设我需要使用回调,但在阅读了多个论坛(即 art of node)后,我并不明智地使用回调。
任何帮助将不胜感激。
答案 0 :(得分:1)
感谢 @VLAZ 为我指明了正确的方向 :-)
我编辑后的代码:
function getAllClients(site) {
return new Promise(function (resolve, reject) {
login(function () {
controller.getClientDevices(site, (err, data) => {
if (!err) {
resolve(data);
}
});
});
});
}
我改变的只是返回承诺,然后我在另一个文件中使用 .then()
谢谢!