angular承诺对象之间的区别

Difference between angular promise objects

本文关键字:区别 之间 对象 承诺 angular      更新时间:2023-09-26

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

<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

在第一种情况下,你调用$http.get("/echo/json/")返回一个Promise。之后,您将"then"方法与回调应用于此承诺(返回您的新承诺),之后您的控制台输出被执行(并且您在那里有这个新承诺)。回调函数在实际结果返回时执行。在第二种情况下,你创建promise,记录它(作为第一个创建的promise,没有更多,没有回调),然后你应用"then"方法回调到你的promise。同样,回调函数将在收到结果后执行。