Javascript HTMLIMAGELEMEN.src在哪里为HTMLIMAGELEMEN处理?
考虑以下代码,该代码检测图像src在角度上是否有效Javascript HTMLIMAGELEMEN.src在哪里为HTMLIMAGELEMEN处理?,javascript,html,angularjs,promise,Javascript,Html,Angularjs,Promise,考虑以下代码,该代码检测图像src在角度上是否有效 isImage: function(src) { var deferred = $q.defer(); var image = new Image(); image.onerror = function(data) { console.log(data, "error"); deferred.resolve([false, 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
两次
但是
是打印1次吗
好像在某个地方有一个变更处理程序在监视这个属性
我的问题是.src
的更改处理程序在哪里,为什么只解决一次
我的问题是.src
的更改处理程序在哪里
javascript
在问题集onerror
和onload
的属性的处理程序设置两次,调用onerror
或onload
事件处理程序两次
为什么是这样?那就只解决一次
承诺最多只能解决或拒绝一次.then()一旦链接到Promise
对象,就会被调用
我的问题是.src
的更改处理程序在哪里
javascript
在问题集onerror
和onload
的属性的处理程序设置两次,调用onerror
或onload
事件处理程序两次
为什么是这样?那就只解决一次
承诺最多只能解决或拒绝一次.then()
一旦链接到Promise
对象,就会被调用。但它在哪里检测到src
正在更改?@Jal Atload
和error
事件。“如果在尝试加载或渲染图像时发生错误,并且已配置onerror事件处理程序来处理该事件,则将调用该事件处理程序。”另请参阅事件。但它在何处检测到src
正在更改?@Jal Atload
和error
事件。“如果尝试加载或呈现图像时发生错误,并且已配置onerror事件处理程序来处理该事件,则将调用该事件处理程序。”另请参阅事件处理程序。
return