丢失带有承诺的图像句柄

时间:2014-05-19 13:01:51

标签: angularjs promise

我想从网址加载背景图片,如果其中一个不可用,请不要加载,只是抛出错误信息。我在AngularJS中为此创建了一个服务,我的问题是,我无法处理不可用的图像错误。

app.service('Images', ['$q', '$http', function ($q, $http) {
  this.loadImage = function (uri) {

            var deffered = $q.defer();

            var img = new Image();
            img.onerror = function() {
                deffered.resolve(false);
            };
            img.onload = function () {
                console.log('img loaded');
            };

            img.src = uri;
            return deffered.promise;
        };
        return this;
    }]);

Plunker example

当我处理返回的promise时,它不应该在浏览器控制台中删除错误。如果onload已执行,则onerror函数不应运行。我不知道,我的代码的基础是什么with this example。 (我试图使用工厂,但没有帮助。)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我不确定你的Image类是做什么的,但我认为你需要使用

deffered.reject(false);

而不是

deffered.resolve(false);

img.onload也应改为

 img.onload = function () {
    deffered.resolve(img);
 };