有可能做这样的事情:
var citiesPromise = citiesService.getCities();
var usersPromise = usersService.getUsers();
citiesPromise.then(function(citiesResult) {
// cities will load very quick, and I can do something with them
);
$q.all([citiesPromise, usersPromise]).then(function(results) {
// users will probably load after cities, but both results must be available
);
Run Code Online (Sandbox Code Playgroud)
换句话说,我需要一个将作为事件调度程序的承诺,并且对该承诺的每次'then'调用就好像事件监听器被添加到该承诺中一样.当promise被解决或拒绝时,将通知所有事件侦听器.
这可以实现,或者在这种情况下应该只将"$ q.all"作为单点来处理所有结果?
这样做我会得到什么?也许在这种情况下并不多,但如果我要进行10次或更多次ajax调用,如果页面逐渐加载,而不是浪费时间等待http请求,那将会很酷......
你的代码看起来很不错.$q.all()一切都完成后,将执行一次.但是then()当所附的承诺被解决时,所有函数都将执行.所以then(),只要它们彼此独立,多个函数就可以了.
这样做的好处是你想要的逐步页面加载.你可以让某些事情等待一切,但其他项目可能会开始起作用.
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |