我对AngularJS和JavaScript相对较新。我最近一直试图通过创建自己的项目来学习。我注意到我的应用程序在这样的代码之间没有明显区别:
$q.when(authenticationService.login($scope.username, $scope.password))
.then(function (response) {
}, function (error) {
});
和此:
authenticationService.login($scope.username, $scope.password)
.then(function (response) {
}, function (error) {
});
似乎$ q.when并不是真的那么必要。我做了一些阅读,我认为缺乏差异可能是因为我的authenticationService.login()
返回了一个承诺。
但这只是为了那个吗? $ q.when()仅用于确保内部的任何内容是一个承诺吗? (如果它是,它会离开它,如果它不是它将它包装在一个承诺中)?
有哪些可能的其他用例?
谢谢!
答案 0 :(得分:3)
The documentation似乎非常清楚:
将可能是值的对象或(第三方)包装成$ q承诺。当您处理可能会或可能不是承诺的对象,或者承诺来自不可信任的源时,这非常有用。
如果术语“可以”(他们写的“那么可能”)不熟悉,那么值得回顾一下Promises/A+ spec。