2014-01-08 63 views
1

我有类似如下的代码(CoffeeScript的):IE9:store.find承诺不解决

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),它的工作原理。所以它看起来像某种数据竞赛。有没有人经历过这个?

回答

0

令人惊讶的是我的工作在其他所有浏览器,因为我认为你必须使用一个胖箭头(=>)来访问application,除此之外,你永远不会调用advanceReadiness(需要())。

如果在任何的再/不合格的方法发生了错误,它会默默地失效。为了捕捉这些错误,请参阅。

+0

对不起,代码是从我头顶写的,我写了很多Ruby,所以代码可能不完全正确,我会毫不犹豫地修复。我知道,“然后”和“失败”的职能不叫,因为我在其中设置断点,所以没有异常都有出现的机会。 –

+0

不,你不需要胖箭头,除非你打算使用'this'而不参考当前函数。 –

+0

嗯好点。在这种情况下,我无法帮助你 –