最后一个链接承诺不运行 [英] The last chained promise does not run
本文介绍了最后一个链接承诺不运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经链接,我想在这特定的顺序来执行一些方法。
第二种方法 deviseLogin()
返回应该对下一个方法传递一个网址重定向(URL)
第一和第二个方法运行,但我从来没有听到任何最后重定向(URL)
。你能看到我在做什么错?
getUserToken =(用户名,密码) - GT;
CONSOLE.LOG我是第一
$ HTTP(
方法:POST
网址:/ OAuth的/令牌
params:一个PARAMS
).success((数据,状态,头,配置) - GT;
$范围。$ storage.token = data.access_token
推迟= $ q.defer() $ scope.signIn =(数据) - >
defer.promise
。然后(getUserToken($ scope.email,$ scope.password))
。然后(deviseLogin())
。然后(重定向(URL))
重定向=(URL) - GT;
CONSOLE.LOG我是最后一个
CONSOLE.LOG将重定向到#{URL}
$ window.location的= data.url deviseLogin =() - >
CONSOLE.LOG我是第二个
$ scope.authErrors = []
的authData = {用户:{电子邮件:$ scope.email,密码:$ scope.password}}
$ HTTP(
#执行定期制订登录
方法:POST
网址:/用户/ sign_in
数据:的authData
)
.success(数据) - >
#我可以看到下面的日志行和data.url是我希望它是
的console.log登录制定
的console.logdata.url:#{} data.url
data.url
解决方案
我从来没有得到最后的。然后(重定向(URL))
在踢。问题解决了通过移动重定向(URL)
成功()在 deviseLogin内()
。
感谢所有的建议和帮助! :)
I have chained a few methods that I'd like to execute in that specific order.
The second method deviseLogin()
returns a URL that should be passed on the the next method redirect(url)
The first and the second method runs, but I never hear anything from the last redirect(url)
. Can you see what I'm doing wrong?
getUserToken = (username, password) ->
console.log "I'm first"
$http(
method: "POST"
url: "/oauth/token"
params: params
).success((data, status, headers, config) ->
$scope.$storage.token = data.access_token
defer = $q.defer()
$scope.signIn = (data) ->
defer.promise
.then( getUserToken($scope.email, $scope.password) )
.then( deviseLogin() )
.then( redirect(url) )
redirect = (url) ->
console.log "I'm last"
console.log "will redirect to #{url}"
$window.location = data.url
deviseLogin = () ->
console.log "I'm second"
$scope.authErrors = []
authData = { user: { email: $scope.email, password: $scope.password }}
$http(
# Perform a regular Devise login
method: "POST"
url: "/users/sign_in"
data: authData
)
.success (data) ->
# I can see the log lines below and data.url is what I expect it to be
console.log "logged in devise"
console.log "data.url: #{data.url}"
data.url
解决方案
I never got the last .then( redirect(url) )
to kick in. Solved the problem by moving redirect(url)
to within success() on deviseLogin()
.
Thanks for all the suggestions and help! :)
这篇关于最后一个链接承诺不运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文