Javascript不按照逻辑工作
昨晚我一直在努力寻找这个bug,但是找不到。我的javascript代码没有正常工作Javascript不按照逻辑工作,javascript,Javascript,昨晚我一直在努力寻找这个bug,但是找不到。我的javascript代码没有正常工作 var currCab = 0; var cabBooked = 0; function sendMessage(cabId) { if(cabBooked == 1) { return; } // get data from html page $.post("sendMessage.php",data, function(dat
var currCab = 0;
var cabBooked = 0;
function sendMessage(cabId)
{
if(cabBooked == 1) {
return;
}
// get data from html page
$.post("sendMessage.php",data,
function(data,status){
$("#status").html(data);
});
}
function checkBookingStatus()
{
var data = "bookingId="+$("#bookingId").val();
$.post("checkBookingStatus.php",data,
function(data,status){
// callback here
var ans = data.indexOf("true");
if(ans!= -1) {
console.log("returning true from checkBookingStatus");
$("#simpleStatus").html("Cab booked. You can close tab now");
cabBooked = 1;
return true;
} else {
console.log("returning false from checkBookingStatus");
return false;
}
});
}
function tryCabAlloc()
{
if(!checkBookingStatus()) {
if(cabBooked == 1) {
return;
}
var checkid = document.getElementById("cabId"+currCab);
if(checkid==null) {
$("#simpleStatus").html("Cab could not be booked.");
$("#status").html("No more clients to communicate with.");
} else {
var cid = $("#cabId"+currCab).val();
sendMessage(cid);
updateTrying(cid);
currCab = currCab + 1;
}
}
}
$( document ).ready(function() {
$("#simpleStatus").html("Please wait. The communication is being started...");
$("#status").html("GCM push initiating ...");
tryCabAlloc();
setInterval(function(){
if(cabBooked==0) {
tryCabAlloc();
} else {
throw '';
}
},95000);
});
当checkBookingStatus返回true且cabBooked设置为1时,代码应停止工作。但这并没有停止。我不知道为什么。
如果(!checkBookingStatus()){
为false,则它将继续,而不是根据您的评论判断它是否为true。AJAX是异步的。从回调函数返回不会从checkBookingStatus()返回
,因为它在发送AJAX请求时已返回。如何克服此问题?在回调函数中执行您想执行的操作,如重复问题中所述。我希望如果checkBookingStatus返回包含字符串true的数据,则脚本应一起停止。将setInterval
分配给一个变量,然后调用BAC函数可以调用clearInterval()
来停止它。