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