1
考慮下面的代碼,檢測是否該圖片src是角HTMLImageElemen處理HTMLImageElemen.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
is print 1次
看起來像某處有一個更改處理程序看着財產?
我的問題是.src
的更改處理程序在哪裏,爲什麼.then
只解決一次?
但它在哪裏檢測到'src'正在改變? – Jal
@Jal在'load'和'error'事件。 _「如果在嘗試加載或渲染圖像時發生錯誤,並且已將onerror事件處理程序配置爲處理['error'](https://developer.mozilla.org/en-US/docs/Web/事件/錯誤)事件,該事件處理程序將被調用。「_參見[''](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) – guest271314
另請參見[加載](https://html.spec.whatwg.org/multipage/indices.html#event-load)事件。 – guest271314