我有一个包含ajax请求的函数,我希望此函数返回ajax请求的结果。这是功能:
function get_the_posts(cat) {
var table = [];
$.ajax({
type : 'GET',
url : get_all_the_posts + '?cat=' + cat
}).done(function(data){
table = data.table;
console.log(table); // (1) There is what I need and it works
});
console.log(table); // (2) but there is an empty table
return table; // empty result
}
我知道ajax是异步的,这意味着发送请求(或者更确切地说是接收响应)是从正常的执行流程等中取出的,这就是为什么我的第一个console.log()在第二个之后显示的原因一。但是我不知道如何返回由ajax请求返回的数据填充的表格...我试图将return
放在.done
内但它不起作用...
答案 0 :(得分:0)
你应该研究承诺的概念。您正在使用jQuery,因此您可以查看:https://api.jquery.com/category/deferred-object/
基本上你想要的是返回一个承诺,你将返回ajax调用的结果(你在另一个函数中调用它),然后你可以使用结果。
例如:
$.when(get_the_post).then(do_something_with_it);
因此,不是返回表,而是返回 promise ,而在函数do_something_with_it()
中,您将使用结果。