setInterval() で naturalWidth, naturalHeight を監視すれば原理的には可能です。
が、addEventListener で load を監視したほうが素直ですし、負荷も小さいと思います。
(2015/12/01 19:56追記)
load イベントのサンプルを追記しました。
JavaScript
1'use strict';
2(function () {
3 function handleLoad (event) {
4 var img = event.target;
5
6 img.removeEventListener('load', this, false);
7 this.complete(img);
8 }
9
10 function next (img) {
11 console.log(img.width, img.height);
12 }
13
14 function main () {
15 var srcList = ['sample1.jpg', 'sample2.jpg', 'sample3.jpg'],
16 listener = {handleEvent: handleLoad, complete: next};
17
18 for (var i = 0, l = srcList.length, img; i < l; ++i) {
19 img = new Image;
20 img.addEventListener('load', listener, false);
21 img.src = srcList[i];
22 }
23 }
24
25 main();
26}());
(2015/12/02 07:59追記)
ひょっとして実行順も保証したいという意味だったでしょうか。
実行順を保証するコードを追記しました。
JavaScript
1'use strict';
2(function () {
3 function handleLoad (event) {
4 var img = event.target,
5 imgList = this.imgList,
6 srcList = this.srcList;
7
8 img.removeEventListener('load', this, false);
9 imgList[srcList.indexOf(img.getAttribute('src'))] = img;
10
11 if (Object.keys(imgList).length === srcList.length) {
12 this.complete(imgList);
13 }
14 }
15
16 function next (imgList) {
17 for (var i = 0, l = imgList.length, img; i < l; ++i) {
18 img = imgList[i];
19 console.log(img, img.width, img.height);
20 }
21 }
22
23 function main () {
24 var srcList = ['sample1.jpg', 'sample2.jpg', 'sample3.jpg'],
25 listener = {
26 handleEvent: handleLoad,
27 srcList: srcList,
28 imgList: [],
29 complete: next
30 };
31
32 for (var i = 0, l = srcList.length, img; i < l; ++i) {
33 img = new Image;
34 img.addEventListener('load', listener, false);
35 img.src = srcList[i];
36 }
37 }
38
39 main();
40}());