【发布时间】:2023-03-20 21:43:02
【问题描述】:
我有一个 angular.forEach 循环,它遍历图像配置对象,以便根据配置中的 URL 创建 javascript Image() 对象。
我不希望在所有图像都正确加载之前返回结果图像。如何通过使用 Angular 承诺来实现这一目标?
考虑以下(简化的)代码 sn-p:
function getImages(imageConfigurations) {
var images = [];
angular.forEach(imageConfigurations, function (config) {
var imageObject = loadImageFromUrl(config.url);
var imageData = {
name: config.name,
order: config.order,
image: imageObject
};
images.push(imageData);
});
//Do not return this untill all of the image objects from forEach loop
//have fired their 'onload' event
return images;
}
function loadImageFromUrl(url) {
var imageObj = new Image();
imageObj.onload = function () {
//Resolve promise?
};
imageObj.src = url;
}
【问题讨论】:
-
你可能想要
$q.all()。让您的loadImageFromUrl调用从$q.defer()返回一个承诺并在onload上解决它。
标签: javascript angularjs image onload angular-promise