Javascript 防止递归函数锁定浏览器

Javascript 防止递归函数锁定浏览器,javascript,jquery,recursion,Javascript,Jquery,Recursion,我有一个递归函数,在运行时锁定浏览器 当此函数运行时,所有jquery命令都被锁定,等待函数结束 我应该怎么做才能使这个函数异步 此函数在document.ready上运行 function SearchTrip() { $.post("/extensions/searchtrip", { from: $("#from").val(), to: $("#to").val(), ddate: $("#ddate").val() },

我有一个递归函数,在运行时锁定浏览器

当此函数运行时,所有jquery命令都被锁定,等待函数结束

我应该怎么做才能使这个函数异步

此函数在document.ready上运行

function SearchTrip() {
$.post("/extensions/searchtrip", {
        from: $("#from").val(),
        to: $("#to").val(),
        ddate: $("#ddate").val()
    },
    function (mReturn) {
        if (mReturn.fTotalAmount != '0,00') {
            var sAirline = '';
            if (mReturn.Airline)
                sAirline = ' pela ' + mReturn.Airline;
            $("#buscandoPassagens").hide();
        } else if (SearchTripAmount < 5) {
            SearchTripAmount++;
            setTimeout(function () {
                SearchTrip();
            }, 500);
        } else {
            $("#pNaoEncontrada").show();
        }
    },
    "json");
}
函数SearchTrip(){
$.post(“/extensions/searchtrip”{
from:$(“#from”).val(),
至:$(“#至”).val(),
ddate:$(“#ddate”).val()
},
功能(mReturn){
如果(mReturn.fTotalAmount!=“0,00”){
var sAirline=“”;
如果(mReturn.Airline)
赛尔林=‘贝拉’+mReturn.航空公司;
$(“#buscandoPassagens”).hide();
}否则如果(金额<5){
SearchTripAmount++;
setTimeout(函数(){
SearchTrip();
}, 500);
}否则{
$(“#pNaoEncontrada”).show();
}
},
“json”);
}

如果要异步运行,只需使用
setTimeout将所有内容包装起来即可:

function SearchTrip(){
    setTimeout( function() {
        //this is your $.post i just deleted 'content' to make answer easier to read
        $.post(); 
    }, 0);
}

为什么要递归启动它?对每个递归调用使用setTimeout。
SearchTripAmount
是全局变量吗?你确定它是递增的吗?是的,SearchTripAmount是全局的,我有一个运行此函数的限制,但没有返回5倍的结果。Hi Kasyx,我需要递归运行它,因为如果结果为=0,函数需要调用自身。好的,但是在我运行函数5次没有结果之后,如何结束循环?我不想让这个函数永远运行。