Вызов AJAX на node.js сервер возвращает неопределенное значение

#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);
};