角度承诺对象之间的区别

时间:2016-10-26 20:31:15

标签: javascript angularjs

承诺1和承诺2有什么区别?第一个只有$$状态属性,第二个有额外的错误和成功回调。他们为什么不同?

<div ng-app="app">
 <div ng-controller="TodoCtrl">

  </div>
 </div>




angular.module('app', [])
 .controller('TodoCtrl', function ($scope, $http) {
//promise 1    
console.log('p1',$http.get("/echo/json/").then(
  function(){ console.log('s1',arguments); }, 
  function(){ console.log('e1',arguments); }
 )
);

var p = $http.get("/echo/json/");
//promise 2
console.log('p2',p);
p.then(
  function(){ console.log('s2',arguments);}, 
  function(){console.log('e2',arguments);});
}
);

控制台日志说:

p1 Promise { $$state: Object }
   $$state: Object
   __proto__: Object
 p2 Promise { $$state: Object } 
      $$state: Object
      error: (fn) 
      success: (fn)
      __proto__: Object

1 个答案:

答案 0 :(得分:0)

在你的第一种情况下,你调用$ http.get(“/ echo / json /”)来返回一个Promise。之后,将“then”方法应用于此承诺的回调(返回新的承诺),之后执行控制台输出(并且您有新的承诺)。当真实结果返回时执行回调函数。 在第二种情况下,您创建承诺,记录它(作为第一个创建的承诺,仅此而已,没有回调),然后您将“then”方法应用于您的承诺回调。同样,在收到结果后将执行回调函数。 您可以在Promise API documentation找到说明。