【发布时间】:2016-05-29 00:03:05
【问题描述】:
关于如何从 Angular 1.3 Promise 迁移到 Angular 1.5 Promise,我刚刚遇到了一个问题(以我的名义非常愚蠢),这不是代码方面的问题,而是我使用它们的方式。然而我可能不是这个星球上最愚蠢的人,所以我指的是你,乔伊,我唯一的下等:-p
我使用 promise 作为方法(例如服务方法)的结果,因此解析器会知道发生了什么。例如
function myLogin(user,pass) {
return $http({url:'/auth/login', data:{user:user,pass:pass}).
success(function (r) { loggedin = true; }).
error(function (r) { loggedin = false; });
}
然后我也可以写:
myLogin("Joe","12345").success(function (r) { console.log("WOW!"); }).
.error(function (r) { console.error(":-("); });
现在,在将成功/错误替换为 then 之后,如果您保留此代码形式,这将不再可能。
这是因为then 不是返回原来的promise,而是函数执行的结果。
所以如果我写:
function myLogin(user,pass) {
return $http({url:'/auth/login', data:{user:user,pass:pass}).
then(function (r) { loggedin = true; } ,
function (r) { loggedin = false; });
}
myLogin("Joe","12345").then(function (r) { console.log("WOW!"); },
function (r) { console.error(":-("); });
下面的then 正在获取第一对函数(无论执行哪个)返回的内容!
我该怎么办?
提示:我读过有一个选项可以通过 $http 提供程序重新启用成功/错误,但这不会持续很长时间...
【问题讨论】:
标签: angular-promise