我遇到了一个场景,我需要在下面的场景中运行。我准备好了我的代码,只需要同步执行两个javascript块。
var baseQuery ='test';
var mainQuery ='test';
if(baseQuery!='')
{
//Ajax call
}
if(mainQuery!='')
{
//Ajax Call
}
如果首先完成执行,我如何确保第二个块代码运行。
答案 0 :(得分:1)
这取决于您用于实现AJAX的库。但是,AJAX调用通常使用 promises 进行操作,因此您只需要在第一个AJAX请求的解析块上调用第二个函数。
例如,如果您使用 jQuery ,请按以下步骤操作:
$.ajax({
url: API_URL + "/endpoint",
method: "GET"
}).done(function (data) { //This happens after the AJAX promise has resolved
//call second block here
})
.fail(function(e){ //This block is called in case of error in AJAX query
console.log(e);
});
})
编辑:此ajax查询位于if(baseQuery!=''){}
答案 1 :(得分:1)
一种方法是使用promise,并在第一次ajax调用成功时解决它。
var defer = $.Deferred();
var baseQuery ='test';
var mainQuery ='test';
if(baseQuery!='')
{
//resolve the promise in the success of first ajax call
defer.resolve(...) // do it inside your success handler in error you can reject
}
if(mainQuery!='')
{
defer.promise().then(function(data){
//this will execute after complete of first ajax call;
})
}
您可以将逻辑推入第二个块的成功处理程序中,并在内部检查mainQuery!=''
,然后执行条件代码。
快乐编码:)
答案 2 :(得分:0)
var baseQuery ='test';
var mainQuery ='test';
var bool=false;
if(baseQuery!='')
{
//Ajax call
//Ajax success (bool=true;)
}
if(mainQuery!='' && bool ==true)
{
//Ajax Call
}
var baseQuery ='test';
var mainQuery ='test';
var bool=false;
if(baseQuery!='')
{
//Ajax call
//Ajax success (if(mainQuery!=''))
}
答案 3 :(得分:0)
你可以在第一次ajax调用成功时运行第二个阻止
if(baseQuery!='')
{
$.ajax({
type: "POST",
url: url,
beforeSend: function (xhr) {
},
success: function (data) {
if(mainQuery!='')
{
//Ajax Call
$.ajax({
});
}
}
});
}