我在我的 js 中调用了两个通过 ajax 获取数据的函数:
getNumContentTotal(ctx);
getContentAll(ctx);
getNumContentTotal(ctx) 设置 getContentAll(ctx) 所需的 var;
有没有办法在设置我的 var 之前不执行第二个函数?
我在我的 js 中调用了两个通过 ajax 获取数据的函数:
getNumContentTotal(ctx);
getContentAll(ctx);
getNumContentTotal(ctx) 设置 getContentAll(ctx) 所需的 var;
有没有办法在设置我的 var 之前不执行第二个函数?
如果您使用的是 jQuery(我假设您是),则返回 ajax 调用在您的getNumContentTotal()
andgetContentAll()
方法中返回的对象。jQuery 返回一个类似对象的承诺,允许您以序列化的方式管理回调:
编辑:关于 jQuery 承诺的更好文章:了解 JQuery.Deferred 和 Promise。
function getNumContentTotal(ctx) {
return $.ajax(...);
}
function getContentAll(ctx) {
return $.ajax(...);
}
var promise = getNumContentTotal(ctx);
promise.pipe(function(data) {
// do something with data
return getContentAll(ctx);
}).done(function(data) {
// do something with data
});
像这样的东西怎么样:
function getNumContentTotal(ctx)
{
$.ajax({
url: ajaxUrl,
context: document.body
}).done(function(data) {
getContentAll(data);
});
}
function getContentAll(ctx)
{
//other function
}
因此,您仅在加载第一个函数时才调用下一个函数。这样,您将提供给下一个函数的变量总是被填充。