confused:$ q.when()或只是在没有它的情况下调用函数?

时间:2017-11-19 17:54:30

标签: javascript angularjs promise q

我对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()仅用于确保内部的任何内容是一个承诺吗? (如果它是,它会离开它,如果它不是它将它包装在一个承诺中)? 有哪些可能的其他用例? 谢谢!

1 个答案:

答案 0 :(得分:3)

The documentation似乎非常清楚:

  

将可能是值的对象或(第三方)包装成$ q承诺。当您处理可能会或可能不是承诺的对象,或者承诺来自不可信任的源时,这非常有用。

如果术语“可以”(他们写的“那么可能”)不熟悉,那么值得回顾一下Promises/A+ spec