我有關於同步請求的問題。爲什麼在使用同步請求時需要返回請求之外的值?
背景:我需要在結賬前立即獲取用戶的用戶ID。如果userID爲null或零,我將強制用戶登錄。我決定使用同步請求。我瞭解異步請求和同步請求之間的區別。不過,我不明白爲什麼下面的第一個代碼不起作用,但第二個代碼不行。
...
UserId = GetUserId();
...
function GetUserId()
{
var jsonRequest = new Request({url: myurl, async: false, onComplete: function(result) {return result;}}).get();
}
當我使用上面的代碼時,我得到UserId = undefined。但是它的工作原理,當我用下面
...
UserId = GetUserId();
...
function GetUserId()
{
var resultreturned;
var jsonRequest = new Request({url: myurl, async: false, onComplete: function(result) {resultreturned = result;}}).get();
return resultreturned;
}
代碼在我看來,在第一個代碼,該處理不即使我使用了異步停止:假的。在第二個代碼中它起作用。
有誰知道爲什麼?
另外,有沒有一種方法來訪問返回的id,而不使用var resultRed返回?我可以使用類似
返回jsonRequest.value或jsonRequest.result或其他東西嗎?
謝謝。
爲什麼你準確地使用同步請求?異步請求無法正常工作嗎? – outis
因爲如果我使用異步請求,代碼在等待userId返回時不會停止。系統會認爲沒有userId並會顯示登錄屏幕。我認識到AJAX是作爲一個異步過程創建的。但在這種情況下,我不認爲它會作爲異步請求。謝謝。 – jdias
爲什麼不能在異步請求返回時使用回調來顯示登錄屏幕,而不是當'GetUserId'返回時? – outis