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