如何以同步方式运行2个Javascript块

时间:2017-07-13 11:12:02

标签: javascript jquery

我遇到了一个场景,我需要在下面的场景中运行。我准备好了我的代码,只需要同步执行两个javascript块。

var baseQuery ='test';
var mainQuery ='test';
if(baseQuery!='')
{
  //Ajax call
}

if(mainQuery!='')
{
  //Ajax Call
}

如果首先完成执行,我如何确保第二个块代码运行。

4 个答案:

答案 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({
              });
            }
        }
    });
}