Кто-нибудь может посоветовать:
Я написал веб-страницу на стороне клиента, которая имеет соединение Websocket с приложением узла на стороне сервера. Все работает нормально.
Когда определенное сообщение отправляется через веб-сокет от клиента, я получаю ответ от сервера (снова через соединение через веб-сокет) с некоторым текстом, и я показываю его на стороне клиента, когда репозиторий получили. Все работает нормально.
А что, если я хочу сделать функцию на сервере асинхронной, которая ждет 4 секунды перед возвратом строки. Я не могу заставить это работать, строка возвращается как «[object Promise]».
Итак, исходный синхронный код на сервере, который выполняется в репозитории для вызывающего клиента и работает, :
Chatterer.prototype.HandleASCIIMessage = function(szMessage, ws)
{
ws.send("BANG");
}
Теперь я заменил это на:
Chatterer.prototype.HandleASCIIMessage = function (szMessage, ws)
{
var sz = this.Test();
ws.send(sz);
}
Где Test:
Chatterer.prototype.Test = function()
{
return this.ShowResult();
}
Остальная часть кода:
Chatterer.prototype.ShowResult = async function ()
{
var result = await this.GetAsync();
return result;
}
Chatterer.prototype.GetAsync = async function ()
{
var result = await this.AsyncFunc();
return result;
}
Chatterer.prototype.AsyncFunc = async function ()
{
return new Promise(resolve => {
setTimeout(() => {
resolve("BANG");
}, 4000);
});
}
Я пытаюсь не вызывать строку ws.send (sz), пока не истекут 4 секунды.
Спасибо, Митч.