调用另一个函数的节点函数和 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()

谢谢!