调用另一个函数的节点函数和 returns 未定义
node function calling another function and returns undefined
我在 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)我不知道是否有回调。
如有任何帮助,我们将不胜感激。
感谢 @VLAZ 为我指明了正确的方向:-)
编辑后我的代码:
function getAllClients(site) {
return new Promise(function (resolve, reject) {
login(function () {
controller.getClientDevices(site, (err, data) => {
if (!err) {
resolve(data);
}
});
});
});
}
我所做的所有更改都是返回承诺,然后我在另一个文件中使用 .then()
谢谢!
我在 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)我不知道是否有回调。
如有任何帮助,我们将不胜感激。
感谢 @VLAZ 为我指明了正确的方向:-)
编辑后我的代码:
function getAllClients(site) {
return new Promise(function (resolve, reject) {
login(function () {
controller.getClientDevices(site, (err, data) => {
if (!err) {
resolve(data);
}
});
});
});
}
我所做的所有更改都是返回承诺,然后我在另一个文件中使用 .then()
谢谢!