0

ドキュメントのフェッチを実行する基本的なコレクションがあります。

message_list.fetch({

            success: function(){
                console.log('success');
                //render
                grid_view.render();
            },
            error: function(xhr, text, ajax){
                //set a column limit and retru
                console.log('retrying');
                urlParams.colLimit = true;
                $.ajax(this);
                return;
            },
            data: urlParams,
            processData:true
        });

これにより、サーバーからjsonが取得され、サーバーはthriftを使用してhbaseテーブルにクエリを実行します。特定のアカウントでは、hbaseのデータセットが大きすぎて、メモリが不足し、500応答が返されます。そのため、新しいクエリパラメータを追加した後、エラー時に同じajax呼び出しを再起動したいと思います。jquery .ajaxのドキュメントを見ると、$。ajax(this)を呼び出すと書かれていますが、これはウィンドウオブジェクトです。また、xhr変数には空の成功関数があります。同じプロパティと成功/エラー関数を使用して同じajax呼び出しを再起動するにはどうすればよいですか?

4

2 に答える 2

0

Function.bind を使用して、必要なコンテキストにコールバックをバインドします。 success_cb.bind(desired_context) Function.bind は ECMAScript 5 であるため、シムを追加する必要がある場合があります。同様のオプションは、$.proxy を使用することです: http://api.jquery.com/jQuery.proxy/

于 2012-07-02T21:45:28.303 に答える
0

それはとても簡単です -- 保存して戻すことができるオブジェクトを作成します:

var success_cb = function(){
    console.log('success');
    //render
    grid_view.render();
};

var error_cb = function(xhr, text, ajax){
    //set a column limit and retru
    console.log('retrying');
    urlParams.colLimit = true;
    $.ajax(this);
    return;
};

var fetch_options = {
        success: success_cb, 
        error: error_cb,
        data: urlParams,
        processData:true
}

message_list.fetch(fetch_options);

fetch_optionsが 2 つのコールバック関数と同じスコープで定義され、fetch_optionsそのスコープ外でアクセス可能である限り、アクセスできるものはすべて へfetch_optionsの引数として使用できます.fetch

于 2012-07-02T19:49:39.417 に答える