Javascript 困惑:$q.when()还是只调用没有它的函数?
一般来说,我对AngularJS和JavaScript比较陌生。最近我一直在尝试通过创建自己的项目来学习。我注意到,我的应用程序在功能上与以下代码没有明显区别:Javascript 困惑:$q.when()还是只调用没有它的函数?,javascript,angularjs,promise,q,Javascript,Angularjs,Promise,Q,一般来说,我对AngularJS和JavaScript比较陌生。最近我一直在尝试通过创建自己的项目来学习。我注意到,我的应用程序在功能上与以下代码没有明显区别: $q.when(authenticationService.login($scope.username, $scope.password)) .then(function (response) { }, function (error) {
$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()只是为了确保里面的东西都是承诺吗?(如果是,它就离开它,如果不是,它就用承诺来包装它)?
其他可能的用例是什么?
谢谢 似乎很清楚这一点:
将可能是值或(第三方)的对象包装为$q承诺。当您处理的对象可能是承诺,也可能不是承诺,或者承诺来自不可信任的来源时,这非常有用
如果术语“thenable”(他们写的是“then-able”)不熟悉,那么值得回顾一下。似乎很清楚这一点:
将可能是值或(第三方)的对象包装为$q承诺。当您处理的对象可能是承诺,也可能不是承诺,或者承诺来自不可信任的来源时,这非常有用
如果术语“thenable”(他们写的是“then-able”)不熟悉,那么值得回顾一下。因为第二个版本有一个有效的
then()
,它表明.login()返回一个承诺,使$q成为多余的。when()
是$q。when()只用于确保里面的东西都是承诺?(如果是,它就离开它,如果不是,它就把它包装成一个承诺)?“-是的,就是这样。所以当你知道被调用的函数总是返回一个承诺时,你不需要也不应该使用$q.when
。因为第二个版本有一个有效的then()
它表明.login()返回一个承诺,使$q.when()
redundant“是$q.when()仅用于确保里面的东西都是承诺吗?(因此,如果是,它就离开承诺,如果不是,它就把它包装在承诺中)?”-是的,确实如此。因此,当您知道被调用函数总是返回一个承诺时,您不需要也不应该使用$q。当时。查看规范是一个好主意。在学习承诺方面,我发现MDN是一个很好的资源,可以帮助您轻松实现承诺。查看规范是一个好主意。在学习承诺,我发现MDN是一个很好的资源,可以帮助您轻松地使用它。