我有一个函数向服务器发出AJAX请求,并在完成后返回相关信息。 我有另一个函数,它根据返回的信息操作其命名空间中的一些变量。
目前,我向第一个函数追加一个'callback'参数,该函数在请求完成时调用。然而,这模糊了第一个函数的目的 - 而不是'getInfo'函数,它变成了'getInfoAndDo'函数。
理想情况下,我想调用第二个函数(一个'do'函数,它调用第一个函数,一个'get'函数)并完成它的工作。
我环顾四周,发现了jQuery方法,例如.ajaxStop和.ajaxComplete,但它们似乎只在绑定到DOM元素时起作用。有没有办法在javascript中完全执行此操作?
e.g。
function _getEventAttendance(uid, callback) {
var attendQuery = FB.Data.query('SELECT eid,rsvp_status,start_time FROM event_member WHERE uid = {0}', uid);
FB.Data.waitOn( [attendQuery],
function (args){
callback(args[0]);
}
);
}
function logAttendance(attendance){
console.log(attendance);
}
目前,我正在做:
_getEventAttendance(123456789, logAttendance);
这对我来说似乎很荒谬。
有没有办法编写代码,以便我可以更改_getEventAttendance中的代码片段/删除回调参数:
FB.Data.waitOn( [attendQuery],
function (args){
return args[0];
}
);
然后进行等同于:
的调用logAttendance.ajaxComplete(_getEventAttendance(123456789));
(我只是为此编写语法,我不知道它应该如何编写。)
答案 0 :(得分:0)
$.when(<AJAX Request>).then(function(response){...});
可选择先使用$.pipe()
过滤回复。