Я использую XMLHttpRequest в javascript, чтобы сделать запрос HTTP на локальный сервер. Это код, который я использую.Возвращение ответа HTTP в javascript
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);
}
}
Я хочу, чтобы эта функция возвращала ответText, чтобы я мог использовать его где-то еще.
Для этого я попробовал два метода, 1) Я попытался возвращающимся ответ и печатающие отклик в консоли
var temp = function(string)
console.log(temp)
но переменная температура, что грядет как неопределенные в консоли, в основном, я думаю, это потому, что перед речь идет о console.log он еще не установлен (ответ не вернулся)
2) Я поставил глобальную переменную (trans_res) и установите его в функции и распечатать его
var temp = function(string)
console.log(trans_res)
Однако он также подходит как неопределенный.
Как я могу гарантировать, что я верну ответ, все в порядке, если мне нужно остановить выполнение где-то посередине, но я хочу, чтобы был действительный ответ.
Yup, я получаю это, вы можете предложить какой-то метод ожидания, чтобы выполнение остановилось до получения ответа. – user40647
Это проблема, остановка Javascript означает остановку всего браузера (вкладка). Нет многопоточности. Вы можете сделать 'timer = window.setInterval (testMyResult, 250)' и 'function testMyResult()'. Он будет опросить ваш «почтовый ящик» 4 раза в секунду. Если результат получен, вы должны «window.clearInterval (timer)». – Holger