在服务器上调用异步javascript函数

在服务器上调用异步javascript函数,javascript,node.js,async-await,Javascript,Node.js,Async Await,请任何人提出以下建议: 我已经编写了一个客户端网页,它与服务器端节点应用程序有一个Websocket连接。一切正常 当某条消息从客户端通过websocket发送时,我让服务器用一些文本响应(再次通过websocket连接),并在接收到回复时在客户端显示这些文本。一切正常 现在,如果我想让服务器上的函数成为一个异步函数,在返回字符串之前等待4秒,该怎么办。我无法让它工作,字符串返回为“[对象承诺]” 因此,服务器上的原始同步代码(在与客户端调用的休止状态下执行)是: Chatterer.proto

请任何人提出以下建议:

我已经编写了一个客户端网页,它与服务器端节点应用程序有一个Websocket连接。一切正常

当某条消息从客户端通过websocket发送时,我让服务器用一些文本响应(再次通过websocket连接),并在接收到回复时在客户端显示这些文本。一切正常

现在,如果我想让服务器上的函数成为一个异步函数,在返回字符串之前等待4秒,该怎么办。我无法让它工作,字符串返回为“[对象承诺]”

因此,服务器上的原始同步代码(在与客户端调用的休止状态下执行)是:

Chatterer.prototype.HandleASCIIMessage = function(szMessage, ws)
{
    ws.send("BANG");
}
现在,我将其替换为:

Chatterer.prototype.HandleASCIIMessage = function (szMessage, ws)
{
    var sz = this.Test();
    ws.send(sz);
}
其中测试为:

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);
    });
}
我试图在4秒结束之前不要调用ws.send(sz)线路

谢谢, Mitch.

Chatterer.prototype.ShowResult=异步函数()
{
var result=wait this.GetAsync();
返回结果;
}
上述函数返回一个承诺(异步函数返回一个承诺)。这意味着以下内容也会返回一个承诺:

Chatterer.prototype.Test=函数()
{
返回此.ShowResult();
}
您也可以将上面的
异步
,使其更加明显,但技术上并不需要它

这意味着:

Chatterer.prototype.HandleASCIIMessage=函数(szMessage,ws)
{
var sz=this.Test();
ws.send(sz);
}
sz
是一个承诺,所以要么制作
HandleASCIIMessage
async
var sz=等待这个。Test()
,或者将普通的
Promise
API与
this.Test()一起使用。然后(sz=>ws.send(sz))