問題タブ [framejs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Typescript - Frame.js を使用した同期 ajax 呼び出し (解決策: JQueryDeferred)
この質問は typescript とはまったく関係ありませんが、コンテキストがなければ、なぜそのような動作が必要なのかは不明です。Typescript を知っているかどうかを理解するのは比較的簡単です。
Typescript には、次のようなダイアログ クラスの実装があります (関連するメソッドとフィールドのみを表示します)。
次のように Show() への呼び出しをチェーンできるように、 andthis
から戻ってきます。AjaxLoadContent()
HtmlLoadContent()
この連鎖構文は非常にきれいで論理的だと思うので、それを使い続けたいのですが、ajax のシナリオでは、Show()
ajax が完了する前に呼び出されるload()
ため、ダイアログが開き、コンテンツが表示されるまでに遅延が生じます。load()
内部で呼び出すのではなく、呼び出しに明示的にチェーンしたいので、コールバックを提供できませんShow()
...したがって、ある種の同期メカニズムが必要です。
私は現在、Frame.js を調べて、ブラウザーを$.ajaxSetup({async: false;})
. これがうまくいくと思っていた答えです:https://stackoverflow.com/a/10365952
ただし、次のコードにはまだ遅延があります。
ただし、定義した明示的な制御フローにもかかわらず、ブレークポイント 2 が最初にヒットするため、これは機能しないようです。Show()
呼び出しは直後に発生しreturn this
(したがって、空のダイアログが読み込まれます)、最終的にthat.jQueryDialog.html(response)
2 番目のフレームから呼び出され、ダイアログが既に表示された後にコンテンツが読み込まれます (したがって、まだ遅延があります)。
この同期動作を実現するにはどうすればよいですか?