javascript - Angular $promise 不使用 defer

标签 javascript angularjs node.js

现在网上所有关于 Promise 的内容都说,除了 Angular.js 上的文档/示例之外,在使用 Promise 时不要使用 defer。

在不使用 defer 的情况下返回 angular.js $promise 的值的正确方法是什么?

这是我目前拥有的:

function foo() {
  var deferred = $q.defer();    
  userService.findProgramsByUser({personId: personId}).$promise
    .then(function (programs) {
        deferred.resolve(programs);
    });
  return deferred.promise;
}

如果我使用 Node Q 库,我会这样做:

function foo() {
  return Q.promise(function(resolve, reject) {
    userService.findProgramsByUser({personId: personId})
      .then(function (programs) {
        resolve(programs);
      });
  }
}

如何在不使用 defer 的情况下使用 Angular Promise 做类似的事情?

最佳答案

由于 userService.findProgramsByUser() 已经有一个 Promise 属性,只需返回该属性即可

function foo() {          
  return userService.findProgramsByUser({personId: personId}).$promise
     .then(function (programs) {
          return programs;
     }, function(){
        // handle errors
     });        
}

关于javascript - Angular $promise 不使用 defer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32872795/

相关文章:

javascript - 表单验证后未提交

javascript - Nodejs : Issue with async and forEach - Need to wait the async to resolve

javascript - 使用外部 JavaScript 库的 WebStorm 自动完成

javascript - 使用 d3 中的 "dy"属性将标签与刻度对齐

javascript - 如何防止 onclick 事件在异步任务完成之前多次触发?

javascript - 如果还调用了 $doChanges,$doCheck 如何不会产生任何影响?

javascript - angularjs,需要帮助理解 $compile 函数

javascript - AngularJS:服务错误,服务未定义。我究竟做错了什么?

node.js - Node.js调用函数

javascript - React Router 中具有 404 路由的多个并行路由