我在原型中有以下代码,我想传入创建数据实例的回调函数(successf,failuref)。似乎没有被调用,任何帮助表示赞赏。 如果显然在主应用程序中定义并且如果我使用async,那么一切都可以正常工作:false也可以,但是我想异步...
回调声明如下
function bdsuccess( data, textStatus, jQxhr ){
...
};
function bdfailure( jqXhr, textStatus, errorThrown ){
...
};
//invocation...
var pd = new Data();
pd.getdata('/resolve', 'test', bdsuccess, bdfailure);
原型如下...
function Data() {
}
Data.prototype.getdata = function(route, req, successf, failuref) {
var ps = new Support();
var bddata = ps.b64enc(req);
var res;
$.ajax({
url: route,
type: 'POST',
contentType: false,
async: false,
data: {bd: bddata},
success: successf,
error: failuref,
});
return res;
}
答案 0 :(得分:0)
我正在尝试猜测您想要的-似乎您想在Data
的“构造函数”中设置回调。
function Data(successf, failuref) {
this.successf = successf;
this.failuref = failuref;
}
Data.prototype.getdata = function(route, req) {
var ps = new Support();
var bddata = ps.b64enc(req);
var res;
$.ajax({
url: route,
type: 'POST',
contentType: false,
async: false,
data: {bd: bddata},
success: this.successf,
error: this.failuref,
});
return res;
}
function bdsuccess( data, textStatus, jQxhr ){
...
};
function bdfailure( jqXhr, textStatus, errorThrown ){
...
};
//invocation...
var pd = new Data(bdsuccess, bdfailure);
pd.getdata('/resolve', 'test');
关于您的原始代码,我有两点不满意
async: false
在不赞成使用主线程上的同步XHR的情况下,您正在使用回调,所以为什么要进行synchronous
调用?
var res;
......
return res;
res永远不会被赋值,那有什么意义呢?
答案 1 :(得分:0)
我如下解决了这个问题,
在main.js文件中
var pd = new Data(Document);
pd.getdata('/resolve', 'testdata', bdsuccess, bdfailure);
function bdsuccess(data){
//success
};
function bdfailure(error){
/failure
};
在data.js文件中
function Data(type) {
this.subscribertype = type;
}
Data.prototype.getdata = function(route, req, successf, failuref) {
var doc = this.subscribertype;
var ps = new Support();
var bddata = ps.b64enc(req);
$.ajax({
url: route,
type: 'POST',
contentType: false,
data: {bd: bddata},
success: function( data, textStatus, jQxhr ){
successf.call(doc, data);
},
error: function( jqXhr, textStatus, errorThrown ){
failuref.call(doc, errorThrown);
}
});
}