AngularJS:一个承诺的多个'thens'

anc*_*jic 1 promise angularjs

有可能做这样的事情:

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请求,那将会很酷......

cla*_*ent 8

你的代码看起来很不错.$q.all()一切都完成后,将执行一次.但是then()当所附的承诺被解决时,所有函数都将执行.所以then(),只要它们彼此独立,多个函数就可以了.

这样做的好处是你想要的逐步页面加载.你可以让某些事情等待一切,但其他项目可能会开始起作用.

  • 不是我...... (5认同)