#javascript #node.js #ajax #express #asynchronous
#javascript #node.js #ajax #выразить #асинхронный
Вопрос:
Я пытаюсь получить доступ к строке, возвращаемой сервером Node.js функция.
function createString () {
do something ...
console.log(finalString);
return finalString;
};
Я использую простой запрос JavaScript AJAX для ПОЛУЧЕНИЯ строки с сервера
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
do something ...
};
xhr.open('GET', 'http://localhost:5000/array');
xhr.send();
Моя серверная часть выглядит следующим образом:
app.get('/array', (req, res) => {
console.log('request received');
console.log(createString());
res.send(createString());
}
);
createString() всегда возвращает значение ‘undefined’ для запроса AJAX, даже если он регистрирует правильную строку в finalString .
Я полагаю, что проблема заключается в асинхронном аспекте AJAX, но я не уверен, как сообщить res.send() дождаться запуска createString().
Любая помощь приветствуется!
Ответ №1:
Вы можете передать объекты req
и res
своей createString
функции. (Я предполагаю, что ваша createArray
опечатка, и так и должно быть createString
). Действительно, если у вас есть только эта функция, вы можете просто иметь:
server.js
app.get('/array', createString);
createString.js
function createString (req, res) {
do something ...
console.log(finalString);
return res.status(200).send(finalString);
};