szi*_*mek 5 javascript promise angularjs
我有以下代码:
authService.authenticate()
.then(function (user) {
return Task.all({user: user})
})
.then(function (tasks) {
// How to access user object here?
})
Run Code Online (Sandbox Code Playgroud)
是否有一些内置的方法将user对象传递给第二个then函数而不执行以下操作:
var user2 = null;
authService.authenticate()
.then(function (user) {
user2 = user
return Task.all({user: user})
})
.then(function (tasks) {
// Use user2 here
})
Run Code Online (Sandbox Code Playgroud)
或这个:
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
})
Run Code Online (Sandbox Code Playgroud)
或通过then直接调用第二个来嵌套它们Task.all(这样我user可以通过闭包获得对象)?嵌套它们正是我想要避免的.
您可以将 then 放在用户仍然可以访问的范围内(检查闭包)
\n\nauthService.authenticate()\n.then(function (user) {\n Task.all({user: user})\n .then(function (tasks) {\n // How to access user object here?\n })\n})\nRun Code Online (Sandbox Code Playgroud)\n\n从 Kriskowal 的Q文档本身来看,两种风格是等效的。Angular$q是基于Q
\n\n唯一的区别是嵌套。如果您需要在闭包中捕获多个输入值,则嵌套处理程序非常有用。
\n
| 归档时间: |
|
| 查看次数: |
2578 次 |
| 最近记录: |