我正在尝试从简单的图像对象创建中创建一个延迟对象,如下所示:
var image = new Image();
image.src = 'some url';
image.onload = function() {
// some code
}
现在......如何使用AngularJS中的$ q库创建延迟对象?有可能吗?
答案 0 :(得分:7)
我认为有一些工厂,你计划在这里放置这个功能。然后:
.factory('utils', function($q) {
return {
createImage: function(src) {
var deferred = $q.defer(),
image = new Image();
image.onload = function() {
deferred.resolve(image);
};
image.src = src;
return deferred.promise;
}
};
});
然后你会像往常一样使用它:
utils.createImage('/assets/images/big-logo.png').then(function(imgObj) {
console.log(imgObj);
});
Angular 1.3 。由于Angular 1.3版本承诺服务$q
也允许新的语法类似于本机Promise
构造函数。然后可以重写上面的函数:
createImage: function(src) {
return $q(function(resolve, reject) {
var image = new Image();
image.onload = function() {
resolve(image);
};
image.src = src;
});
}
您可以同时使用1.3版本。