問題タブ [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.

0 投票する
2 に答える
1895 参照

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 番目のフレームから呼び出され、ダイアログが既に表示された後にコンテンツが読み込まれます (したがって、まだ遅延があります)。

この同期動作を実現するにはどうすればよいですか?