问题描述
现在,我正在将我的AJAX请求修改为异步,但我想知道是否有类似于var reponse = $.ajax({
的成功。在我获得如下代码之前:
var response = $.ajax({
type : "GET",
url : url,
data : parameters,
cache : false,
async : false
}).responseText;
return response;
我尝试使用第一个数据参数来做,但这只是返回参数。 我可以成功使用类似的东西吗?
success : function(response) {
callBack(response);
}
1楼
由于请求是异步的,因此您不能仅返回响应。
jQuery使用一种叫做“ promises”的东西,您可以返回它:
function getUser(id) {
return $.ajax({
url: "/user",
data: { id:id },
});
}
因此,只要想获得用户,就只需调用该函数:
var userRequest = getUser(123);
现在, userRequest
变量包含“未来承诺”。
换句话说,将来的某个时候它将为您准备使用它。
您不能立即使用它,但是可以创建一个在最终准备就绪时将运行的函数。
这是使用.done()
方法完成的:
userRequest.done(function (user) {
console.log("The user " + user.name + " has been loaded!");
});
例如,如果您还希望将用户的个人资料加载到用户旁边,则可以创建两个请求,然后使用$.when()
方法:
var userRequest = getUser(123).
profileRequest = getProfileForUser(123);
$.when(userRequest, profileRequest).done(function (user, profile) {
console.log(user.name + " is " + profile.age + " years old");
});
阅读有关更多信息。