IE9: обещанието store.find не е разрешено

Имам нещо като следния код (coffeescript):

Ember.Application.initializer
  name: 'currentPerson'
  initialize: (container, application) ->
    application.deferReadiness()
    store.find('person', 'current')
    .then (person) ->
      #Never executed
      application.advanceReadiness()
    .fail >
      #Never executed
      application.advanceReadiness()

Това работи във всички други браузъри, но не и в IE9.

Смешното е, че ако отстраня грешки в това и поставя точка на прекъсване точно след като findById създаде обещанието (findById се извиква от store.find), работи. Така че изглежда като някаква надпревара за данни. Някой преживявал ли е това?


person Robin Heggelund Hansen    schedule 08.01.2014    source източник


Отговори (1)


За мен е изненадващо, че работи във всички други браузъри, защото мисля, че ще трябва да използвате дебела стрелка (=>) за достъп до application, а освен това никога не извиквате advanceReadiness (нуждае се от ()).

Ако възникне грешка в някой от методите then/fail, тя ще се провали тихо. За да уловите тези грешки, вижте https://github.com/tildeio/rsvp.js#error-handling.

person Thomas Brus    schedule 08.01.2014
comment
Съжалявам, кодът беше написан от върха на главата ми, а аз пиша много Ruby, така че кодът може да не е напълно правилен, ще го поправя незабавно. Знам, че функциите then и fail не се извикват, защото съм задал точки на прекъсване в тях, така че няма шанс да възникнат изключения. - person Robin Heggelund Hansen; 09.01.2014
comment
И не, нямате нужда от дебелата стрелка, освен ако не планирате да използвате „това“, без да се позовавате на текущата функция. - person Robin Heggelund Hansen; 09.01.2014