关于AngularJS中的异步,承诺和链接的问题

时间:2017-03-28 06:55:04

标签: javascript angularjs node.js asynchronous angular-promise

我一直在努力研究自己的承诺,异步调用以及如何在AngularJS中链接它们的基础知识。目前我正在维护一个喜欢在任何地方使用它们的应用程序,作为一个新手,他们至少可以说是压倒性的。

首先,我在服务器端(node.js)中有这个代码,用于检索经理的直接报告列表。这就是前一个开发者的做法,所以我用它作为指南:

exports.findDirectReports = function (req, res) {
   var empnum = req.params.empnum;

   queries.getDirectReports(empnum)
       .then(function (users) {
           return res.json(users);
    })
    .catch(function (err) {
          handleError(res, err);
    });
};

我理解(或者我认为理解):

  1. queries.getDirectReports将首先执行,并将列表作为承诺返回。
  2. 已解决的承诺将在then()
  3. 内返回
  4. return res.json(users)结果将被传递给任何调用它以在其他操作中使用的人。
  5. 我的问题是获得解决的承诺。我知道我不会立即得到结果,因为asyncfind()。但我有null使用这些结果作为条件,每次检查结果时我总是得到[]exports.downloadEmployee = function (req, res) { /* "queries" - alias for another server-side node.js (not really sure what to call this exactly) that contains the entire getDirectReports fxn. */ queries.getDirectReports(empnum) .then(function (users) { EmployeeInfo.find({}, function (err, results) { var tempCtr = []; if (err) { return err; } /* Use results of getDirectReports here as condition where if employee exists, program will execute _.forEach below. */ _.forEach(results, function (item) { tempCtr.push({ employeeID: item.employeeID, employeeName: item.employeeName }); }); return res.json(tempCtr); }); }) .catch(function (err) { handleError(res, err); }); }

    1. 有没有办法立即获得它们?
    2. 如果没有,请在结果准备好后立即执行其他功能?
    3. 这里有问题的功能(也是服务器端node.js):

      callbacks

      我已经在这里看到了某些地方,我需要利用127.0.0.1,但我并不是真的了解如何。一些代码示例与我之前尝试过的代码示例类似(但没有用)。

      任何答案都将不胜感激。

      谢谢。

1 个答案:

答案 0 :(得分:2)

你需要<div class="sidebar"> <ul> <li>a</li> <li>b</li> <li>c</li> </ul> </div>来自函数的承诺

return

承诺是异步的,所以没有办法让这个解决#34;立即&#34;并且您将需要处理从中调用此函数的promise的解析。