【发布时间】:2017-04-20 17:15:52
【问题描述】:
我正在使用 AngularJS 开发一个项目。我们正在考虑使用显示模块模式,这样我们就可以在我们的控制器和服务中拥有私有功能。一切都按预期工作,除了承诺/异步数据。
这是一个例子:
export function SomeController( angularDependencies ) {
'ngInject'
const path = $stateParams.path, // this works fine
data = someService.getPromise(path) // this should return a promise
return {
path,
data // returns {} instead of a promise
}
}
我的问题是:有没有办法只在我解决所有承诺后才返回?像这样的:
Promises.all(allPromises).then((res) => {
return {
path,
'data': res
}
})
我愿意使用 $q、rxjs、下划线等任何东西来让它工作。
更新:我将数据更改为:
const path = $stateParams.path,
data = Promise.resolve(someService.getPromise(path))
现在我有一个出现在 Angular 范围内的对象,它是进度,但它是一个奇怪的对象。我想要的所有数据都在一个对象内,_v。
所以我认为我正朝着正确的方向前进,但如果我发现任何新内容,我会更新此内容。
【问题讨论】:
-
不...您不能等待承诺解决后再返回。这根本不可能。在某个地方,您将不得不使用回调来访问数据。
-
@KevinB 我将如何实现它?有什么我应该看的资源吗?
-
承诺教程。
-
@KevinB 我对 Promise 很熟悉,但我还没有遇到任何可以解决这个用例的东西。如果你有一个教程可以帮助你,那么它不会出现在谷歌搜索的前十几页上,我很乐意看到它。
标签: javascript angularjs asynchronous promise revealing-module-pattern