考虑以下代码,检测图像src是否在角度
中有效 isImage: function(src) {
var deferred = $q.defer();
var image = new Image();
image.onerror = function(data) {
console.log(data, "error");
deferred.resolve([false, src]);
};
image.onload = function(data) {
console.log(data, "success");
deferred.resolve([true, src]);
};
image.src = "some_valid_image_url"
setTimeout(function() {
image.src = "some_valid_image_url"
}, 5000)
return deferred.promise;
}
isImage("some_valid_image_url").then(function() {console.log("return")})
如果我运行上面的代码,我的控制台将打印
success
2次
但是
return
打印1次
似乎某个地方有一个变更处理程序在看房子?
我的问题是.src
居住的变更处理程序在哪里,为什么.then
只解析一次?
答案 0 :(得分:0)
我的问题是
的变更处理程序在哪里.src
居住的
javascript
在问题集onerror
和onload
处理<img>
元素。 .src
的{{1}}属性设置为两次,调用<img>
或onerror
事件处理程序两次。
为什么.then只解决一次?
onload
最多可以解决或拒绝一次。一旦链接到Promise
对象,就会调用.then()
。