我有一个基本的集合,可以对文档进行提取:ie:
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调用?
答案 0 :(得分: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
与两个回调函数在同一范围内定义,并且fetch_options
可以在该范围之外访问,任何可以访问fetch_options
的内容都可以将其用作这是.fetch
的论据。
答案 1 :(得分:0)
使用Function.bind将回调绑定到所需的上下文:success_cb.bind(desired_context) Function.bind是ECMAScript 5,因此您可能需要为其添加垫片。类似的选项是使用$ .proxy:http://api.jquery.com/jQuery.proxy/