【发布时间】:2011-06-27 15:23:08
【问题描述】:
我有一个向服务器发出 AJAX 请求并在完成后返回相关信息的函数。 我有另一个函数,它根据返回的信息在其命名空间中操作一些变量。
目前,我正在向第一个函数附加一个“回调”参数,该函数在请求完成时调用。然而,这模糊了第一个函数的目的 - 它不是一个“getInfo”函数,而是一个“getInfoAndDo”函数。
理想情况下,我想调用第二个函数(一个“do”函数,它调用第一个函数,一个“get”函数)并完成它的工作。
我环顾四周,发现了 .ajaxStop 和 .ajaxComplete 等 jQuery 方法,但它们似乎只在绑定到 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 中的代码 sn-p / 删除回调参数:
FB.Data.waitOn( [attendQuery],
function (args){
return args[0];
}
);
然后进行同样简单的调用:
logAttendance.ajaxComplete(_getEventAttendance(123456789));
(我只是在编这个语法,我不知道它应该怎么写。)
【问题讨论】:
-
你为什么不给我们看一些你的代码?!
-
您在什么环境中运行意味着您没有要绑定的 DOM 元素?您实际上不必使用 DOM 元素,只需绑定到它...
-
我不明白为什么我需要一个 DOM 元素 - 我正在尝试做的事情与 DOM 完全无关。
-
_getEventAttendance 请不要告诉我这是一个javascript函数?如果是那么天哪,我很震惊,你怎么能这样暴露你的数据库结构?
-
$.ajax(...).queue(function(){ $.ajax(...); $(this).dequeue(); })这可能是你在 jQuery 中寻找的东西
标签: javascript jquery ajax asynchronous xmlhttprequest