困惑:$q.when() 还是只调用一个没有它的函数?

confused: $q.when() or just call a function without it?

总的来说,我对 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() returns 是一个承诺。 但仅仅是为了这个吗? $q.when() 只是为了确保里面的内容是一个承诺吗? (所以如果是,它就离开它,如果不是,它就把它包装在一个承诺中)? 其他可能的用例是什么? 谢谢!

The documentation 似乎很清楚这一点:

Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. This is useful when you are dealing with an object that might or might not be a promise, or if the promise comes from a source that can't be trusted.

如果术语 "thenable"(他们写成 "then-able")不熟悉,值得回顾 Promises/A+ spec