我有一个功能齐全的主干 js 应用程序。在我的控制器中,我通过链接的 when.apply 函数调用从 api 检索我的模型。例如,
$.when.apply($, [<<array of deferred async calls>>]).done(function () {
<<Code to be executed after all deferred calls complete>>
});
此代码在最新的 firefox、chrome 和 IE10 浏览器中有效,但在 IE9 中无效。IE9 没有抛出任何错误,但我没有看到在网络选项卡中加载模型数据的调用。因此,调用完成后要执行的代码也不会被命中。
在搜索这个问题时,我遇到了这篇文章。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply 帖子说,
注意:大多数浏览器,包括 Chrome 14 和 Internet Explorer 9,仍然不接受类似数组的对象,并且会抛出异常。
有没有办法在不彻底检查我现有的代码的情况下解决这个问题,这很多?
编辑:在下面@Beetroot 的评论之后,似乎骨干的获取是罪魁祸首,它在 when.apply 中使用。
r = { method: 'get', body: { userId: loggedInUser } };
$.when.apply($, [employee.fetch(r), department.fetch(r)]).done(function () {
<<Code to be executed after all deferred calls complete>>
});
同样,在研究此问题时,SO 中有一些帖子,例如Backbone fetch() failed for IE,建议更改 fetch 函数以使其在 IE9 中工作。如上所述,我们的应用程序目前有数百个 fetches,如果我必须重写这些 fetches,它会让我们大吃一惊。有没有其他方法可以解决这个问题?