1

我正在寻找一种解决方案来从服务中获取某种状态进度指示。我现在意识到没有办法不止一次地解决一个承诺,但我正在寻找一种替代方法。

我最近在 John Heinnickel 对 $q 服务文档的评论中看到了对该问题的引用 - http://docs.angularjs.org/api/ng .$q#comment-906383716 但我无法理解他的解决方案在那里提出。有没有例子可以说明如何实现?

更新——我的目标

我在一个混合移动应用程序上工作,我有一个自定义服务来实现 Web 部件和本机层之间的通信。一些方法(例如下载和存储文件的请求)也应该发送某种进度指示。

非常感谢!

ps 我已将此问题交叉发布到 AngularJS 组:https ://groups.google.com/forum/#!topic/angular/TUAdrIMtSVE

4

1 回答 1

0

这很简单,promise 规范说你可以绑定 onFulfill、onError 和 onNotify。

then 方法的第三个参数是 onnotify 回调,可以多次调用。

您可以使用 http 服务返回的角度承诺,或者您可以从 $q 服务创建延迟对象并调用将值传递给回调的 notify 方法。

var deferred = $q.defer ();
deferred.promise.then (null, null, function(val){
     alert (val)// called two times
})
deferred.notify ("50%")
deferred.notify ("100%")
于 2014-02-03T22:04:25.387 回答