У меня есть функция, которая делает AJAX-запрос к серверу и возвращает соответствующую информацию после его завершения.У меня есть другая функция, которая манипулирует некоторыми переменными в своем пространстве имен на основе возвращенной информации.
В настоящее время я добавляю аргумент 'callback' к первой функции, которая вызывается, когда запрос завершается.Это, однако, размывает цель первой функции - вместо того, чтобы быть функцией getInfo, она становится функцией getInfoAndDo.
В идеале, я хотел бы вызвать вторую функцию (a do'function, которая вызывает первую функцию, функцию' get ') и делает свое дело.
Я осмотрелся и нашел такие методы jQuery, как .ajaxStop и .ajaxComplete, но, похоже, они работают только тогда, когдапривязаны к элементам DOM.Есть ли способ сделать это полностью в javascript?
например,
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));
(я просто составляю синтаксис для этого, я понятия не имею, как это должно быть написано.)