私は完全に機能するバックボーン 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() fails for IEのような投稿があり、IE9 で動作するようにフェッチ関数を変更することを提案しています。前述のように、現在、アプリケーションには数百のフェッチがあり、これらのフェッチを書き直す必要がある場合、大幅に後退します。この問題を解決する他の方法はありますか?