2012-03-27 126 views
0

我有一個JavaScript函數,它會發出ajax請求,並根據結果返回truefalseJavaScript Asyn返回無需等待響應

問題是,當我調用它立即返回的函數時,無需等待ajax請求觸發並真正返回正確的響應。我該如何處理?

function check_value() { 
    //Pseudo code 
    ajax('some-url.php', function(response) { 
     if(response.success) { 
     return true; 
     } else { 
     return false; 
     } 
    }); 
} 

if(check_value()) { 
    alert("true"); 
} else { 
    alert("false"); 
} 

看到問題了嗎?在AJAX請求觸發並調用回調之前,check_value()正在執行並立即返回。

+0

* async * => *不等待響應*這基本上是整個概念的定義。 – Yoshi 2012-03-27 08:35:33

回答

1

這是異步調用的內在本質,你永遠不知道什麼時候會完成。所以相反,創建兩個成功和錯誤的處理程序:

function check_value() { 
    //Pseudo code 
    ajax('some-url.php', function(response) { 
     if(response.success) { 
     handleSuccess(); 
     } else { 
     handleError(); 
     } 
    }); 
} 

function handleSuccess() { 
    alert('true'); 
} 

function handleError() { 
    alert('false'); 
}