如何避免Angular中的嵌套异步块

时间:2015-02-10 03:17:52

标签: javascript angularjs

这不是一个大问题,但是,我发现编写代码时有时会非常“丑陋”:

angular.module('xxx', []).controller('xxxCtrl', function() {
  someAsyncCall(params, function callback(result) {
    //millions of lines here dependent on "result".
  }
})

我没有在这里使用路由,所以我不能使用“resolve”。

还有其他方法可以避免吗?

1 个答案:

答案 0 :(得分:2)

使用$ q扩展Patrick的评论,然后您可以执行以下模式:

/* handlers, parsers, ... */
function parseSomeAsyncResult() { ... }
...
function displaySomeAsyncResult() { ... }
function errorHandler() { ... }

/* now we can chain together as many handlers as needed to process our results */
someAsyncCall(params)
  .then(parseSomeAsyncResult)
  .then(displaySomeAsyncResult)
  .catch(errorHandler);