2016-07-25 3 views
0

非同期サービスコールを行う最も軽い方法は何ですか?私のマネージャは80kでかなり大きいので、デフォルトでjqueryを使いたくないです。非同期呼び出しはie8内で動作する必要があります。これは普通のjsでやるのはどれくらい難しいですか?または、私が探しているものに適している、jqueryのサブセットまたは他の証明された小さな特殊なjsライブラリがありますか?jsで非同期サービスコールを行う最も軽量な方法は何ですか?

+0

[reqwest](https://github.com/ded/reqwest)をご覧ください。 –

答えて

0

私はこのような要求を取得するJavaScriptのシンプルな無地については何(私は作者ないよ!)それを試してみると、そのような場合に

0

tinyxhrを使用していますか?

var request = new XMLHttpRequest(); 
request.open('GET', '/my/url', true); 

request.onreadystatechange = function() { 
    if (this.readyState === 4) { 
    if (this.status >= 200 && this.status < 400) { 
     // Success! 
     var resp = this.responseText; 
    } else { 
     // Error :(
    } 
    } 
}; 

request.send(); 
request = null; 

出典:http://youmightnotneedjquery.com/#request

+0

私はちょうどこれを見ていた、それはIE9 +が必要です;そうです。 :) –

+0

@AdamAzadいいえ、そうではありません。私はあなたにIE8 +のバージョンを示しました。サイトでは、少なくともサポートする必要があるもの(ie)を選択することができます。これはIE8-Versionです。 – MattDiMu

1

それはかなり簡単です。このサンプルコードはここで使用できますが、気にしています。それはスケールされません!非同期プログラミングは非常に複雑で非常に迅速になります。 2つまたは3つの非同期呼び出しが混在している場合(サーバー上のデータレベルを妨害する)、自分が何をしているかについて2回考えてください。

クライアントで非同期ジョブキューを使用して、呼び出しが非同期であるが、順番に実行されるようにすることができます。これは約束をもって行うのが最善です。

これは、例えばAJAX呼び出しです:

send({ "hello": "world" }, function (response) { 
    document.getElementById("response").innerText = response; 
}); 
+0

コールバックの種類が関数であるかどうかチェックし、OPが望むものを渡す 'callback.apply(this、arguments)'はどうですか? –

+0

が簡単です。これが彼のコードコールバックであれば(なぜ彼は自分自身を傷つけるでしょうか?)他のユーザーが「はい」を使用するフレームワークコードの場合は、必要なチェックをすべて行うことをお勧めします。 – pid

+0

@pidサンプルコードとスケーラビリティに関する警告に感謝します。ここでは主な使用例があります。私は警告を表示するjsフレームワークコンポーネントを開発しています。このコンポーネントはページロード時にアラートサービスを呼び出して、新しい通知を確認します。異なる開発者は、自分のWebサイトでこのjsコンポーネントにrefを追加します。したがって、このサービスは1ページごとに1回非同期に独立して実行されます。したがって、複雑さとスケーラビリティはネイティブxhrの権利を使用することで懸念すべきではありませんか? – user6604655

0

多くのJavaScriptマイクロXHRの機能に特化したライブラリが、場合があります。このよう

function send(data, callback) 
{ 
    var xhr; 

    xhr = new XMLHttpRequest(); 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4 && xhttp.status === 200) 
    { 
     callback(xhr.responseText); 
    } 
    }; 

    xhr.open("GET", "http://..../route/to/your/service/port", true); 
    xhr.send(); 
} 

は、コールバック関数に渡すことによって、それを使用しますあなたはjQueryに慣れていて、それを好むだけで、独自のビルドを作成して、必要のない他のモジュールを単純に除外することができます(これはもちろん、サイズを大幅に縮小します)。

https://github.com/jquery/jquery#modules

また、独自のカスタムバージョンを構築するためにこのサイトを使用することができます。

http://projects.jga.me/jquery-builder/

GZIP形式の結果を使用すると、17KBの周りになるために。

+0

彼の上司はjqueryを言ったと思います。 – pid

+0

@pid - 理由はそのサイズのためでした。私の指摘は、もはや問題にならない不要なモジュールを除外した場合です。 – david

+0

コメントはまだありません。 – david

関連する問題