- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Wed, 12 Mar 2014 10:05:37 -0400
- To: Jake Archibald <jaffathecake@gmail.com>
- Cc: "whatwg@lists.whatwg.org" <whatwg@lists.whatwg.org>
On 3/12/14 9:32 AM, Jake Archibald wrote: > You're right, I was short on detail for that case. > > img.src = foo; > var promise1 = img.loaded(); > img.src = bar; > > I expect promise1 to reject with an AbortError. No, the case I'm worried about is when the first load has already finished, you call loaded(), get a promise (already resolved), and then a new load starts, and maybe finishes, before the promise has notified things. So more like this: var promise1; img.onload = function() { promise1 = img.loaded(); img.onload = null; img.src = bar; }; img.src = foo; I realize no one would write actual code like this; the real-life use case I'm worried about would be more like this: // img is already loaded sometimes // Would like to observe a new load var promise1 = img.loaded(); // oops! This will be pre-resolved if // we were already loaded, but otherwise // will resolve with the new load we're // about to start. img.src = bar; Is my concern making sense? Images are particularly pernicious here because "img.src = bar" might synchronously finish the load, even if it fires the load event async. -Boris
Received on Wednesday, 12 March 2014 14:06:11 UTC