[英]Returning the HTTP response in javascript
我在javascript中使用XMLHttpRequest向本地服務器發出HTTP請求。 這是我正在使用的代碼。
var xhr = new XMLHttpRequest();
xhr.open("POST", "//localhost:5000/translate", true);
xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
xhr.setRequestHeader("Content-Type", "application/json; charset=UTF-8");
xhr.send(JSON.stringify({"sentence":str}));
xhr.onreadystatechange = processRequest;
function processRequest(e)
{
if (xhr.readyState == 4)
{
console.log('trans_res set');
trans_res = xhr.responseText; // here trans_res is a global variable
return String(xhr.responseText);
}
}
我希望此函數返回responseText,以便可以在其他地方使用它。
為此,我嘗試了兩種方法:1)我嘗試返回響應並在控制台中打印響應
var temp = function(string)
console.log(temp)
但是temp變量在控制台中來時未定義,主要是我認為這是因為在進入console.log之前尚未設置(未返回響應)
2)我放入一個全局變量(trans_res)並將其設置在函數中並打印
var temp = function(string)
console.log(trans_res)
然而,它也即將變得不確定。
我如何確保我返回響應,如果我需要在兩者之間的某個地方暫停執行,那么可以,但是我想要一個有效的響應。
您需要新的螺絲刀。 您使用郵箱(trans_res)發送到的位置向亞馬遜發送請求。 亞馬遜正在與您異步。 幾分鍾后,如果您在郵箱中查找,則找不到螺絲刀。 一個小時后,也是。 “郵箱”的問題是,您不知道要看的時間。
當readyState變為4時,您必須進行工作(顯示,更改,通知)。
我認為@Holger的回答有些正確。 您正在檢查返回值是否在函數實際生成之前。 有時要花很長時間才能產生價值。 您應該專注於使函數更快,或者應該繼續檢查返回的值。
使用if-else
語句檢查該值。 如果未定義,請記錄它。 如果與UX相關,則可以在用戶端使用加載輪動畫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.