3

私は現在、関数へのリクエストの数を制限するための最良の解決策を探しています。

例:

function CheckData() {
    if (d == "newdata") {
        GetData(2);
    }
}

function GetData(getcheck) {
    // Ajax Request here
}

私が探している解決策は、CheckDataがGetDataを呼び出すときに、GetDataを呼び出す頻度を制限する方法があるか、突然発生した大量のリクエストがある場合は、それを行う方法があるという方法です。それは最後のリクエストだけを取得すると言いますか?それで、基本的にそれはリクエストの頻度をチェックして、停止したリクエストの大部分が最後のリクエストを送信したと言うことができますか?

CheckDataがGetDataを呼び出す頻度を制限する方法を探していますが、待機を最小限に抑えるための最善の方法を探しています。

私はいくつかの解決策を見てきましたが、それをこの状況に適用する方法がわかりません。

4

1 に答える 1

4

オプション1
関数を呼び出すことができる回数を制限する通常のパターンは次のとおりです。

スロットルデバウンス

(underscore.jsでも同様の実装を見ることができます)

オプション2ajaxの場合でも、同じリソースで一度に1つのリクエストを制限するキューシステム
を 作成できます。

オプション3
または、関数が常に同じリソースを取得する場合は、リクエストが終了したかどうかを確認してください。

var GetData = (function() {
    var running = false;
    return function(getcheck) {
        // exit if ajax is running
        if ( running ) { return; }

        running = true;

        $.ajax(/* go */)
            .done(function() {
                /* do stuff with data */

                // call it over
                running = false;
            });
    }
}());

function CheckData() {
    if (d == "newdata") {
        GetData(2);
    }
}
于 2012-11-02T01:18:35.037 に答える