我有以下代碼:如何訪問先前在AngularJS承諾鏈中承諾的結果?
authService.authenticate()
.then(function (user) {
return Task.all({user: user})
})
.then(function (tasks) {
// How to access user object here?
})
是否有user
對象傳遞給第二then
功能,無需做這樣的事情了一些內置的方式:
var user2 = null;
authService.authenticate()
.then(function (user) {
user2 = user
return Task.all({user: user})
})
.then(function (tasks) {
// Use user2 here
})
或本:
authService.authenticate()
.then(function (user) {
var defer = $q.defer()
Task.all({user: user}).then(function (tasks) {
return defer.resolve(user, tasks)
})
return defer.promise
})
.then(function (user, tasks) {
// Use user2 here
})
或通過直接呼叫第二個then
來嵌套它們Task.all
(這樣我可以通過關閉獲得user
對象)?嵌套它們正是我想要避免的。
謝謝,但這是我在談論我的問題的第三種情況 - 嵌套他們:)我試圖避免它,因爲我只是展示了一個簡化的例子 - 在真正的代碼中有更多的承諾,所以嵌套它們就像使用回調。 – szimek
嗯...是的,你是對的。問題是我在代碼中使用了這種嵌套風格,代碼真的很大......嵌套的層次並不是很大。此外,Coffeescript語法也有很大幫助;) –
我也使用CoffeeScript,因此我會嘗試嵌套它們並查看它的外觀。雖然我並不確定錯誤處理如何在嵌套承諾的情況下工作...... – szimek