2016-06-13 8 views
1

これは明らかにsynchronous has been deprecatedです。これはユーザーエクスペリエンスにとって悪いためです。警告なしで強制的にXMLHttpRequest/Ajaxを強制します

メインスレッドの同期XMLHttpRequestは、エンドユーザーの経験に有害な影響を与えるため、非推奨です。その他のヘルプについてhttp://xhr.spec.whatwg.org/

私たちは皆知っています。しかし、私はまだ開発面で、ユーザーエクスペリエンスとはまったく異なるものに使用したいと考えています。彼らはそれを使用したくないと思っていますが、なぜその機能を削除するのですか?これらの種類のものは、オプションのシンボライザーを介して "デフォルト以外の"設定を介してアクセス可能でなければなりません。 IMOはいつか逆転するでしょう。

とにかく、問題は次のとおりです。警告メッセージを受け取らずに、同期AjaxまたはXMLHttpRequestをエミュレートするためにどのようなハックを使用できますか?私の前提は、ブラウザが完全に非難されると、最終的にはブラウザでは機能しません。

+0

本当にブロック待機が必要ですか。あなたは、応答があったかどうかをチェックし続けるタイムアウトループを行うことができます。 –

+0

私はダイナミックなクライアントサイドを使用しているので、開発用にモジュールローダーが必要です(依存関係)。タイムアウトループが機能せず、ブラウザがハングアップし、xml要求が完了しません。我々は多くの小さなモジュールを持っており、抽象化されたサブモジュール上のゼロ構築構成で開発するのが好きです。 – wayofthefuture

+0

タイムアウトループが機能しないのはなぜですか?それは非同期なので、何もぶら下げてはいけませんか?私が知る限り、JSで完全にブロックすることは実際には不可能です。あなたはたぶん百万を数えてブロックすることができます.... –

答えて

0

この解決方法は機能しません。同様の方法を試してみることをお勧めします。実際に解決策を見つけることができる人は、この回答を削除します。

実際に同期ajaxリクエストを偽装したい場合は、jQueryの .delay()関数を使用して、非同期リクエストが完了したかどうかを確認してください。

function fakeSynchronous(ajaxSettings) { 
    var promise = $.ajax(ajaxSettings); 
    while (promise.state() === "pending") { 
    $("html").delay(1000); 
    } 
} 
+0

ちょうどそれを試してみました...それは、アヤックスのリクエストをブロックするようです... – wayofthefuture

+0

ええ、私は今もそれを参照してください。後で別のものを考え出すことができるかどうかがわかります。 – dave

関連する問題