gpt4 book ai didi

Javascript - 在 Websocket 上使用 promise ?

转载 作者:行者123 更新时间:2023-12-03 08:10:06 29 4
gpt4 key购买 nike

我在纯 Javascript 中使用 Websockets,我想在 Websocket 函数中实现 Promises。我没有收到任何错误,但 Promise 不起作用。

使用下面的代码,我可以成功连接到 socketserver,但 Promise 似乎被跳过了,因为警报的输出总是“失败”。

有人知道这种情况下的问题是什么吗?
Ps:我在最新的 Google Chrome 浏览器和最新的 Mozilla Firefox 浏览器中进行了测试,并为这个示例省略了一些基本的检查/错误处理。

function Connect()
{
server = new WebSocket('mysite:1234');

server.onopen = (function()
{
return new Promise(function(resolve, reject)
{
if (true)
{
resolve();
}
else
{
reject();
}
});
}).then = (function()
{
alert('succeeed');
}).catch = (function()
{
alert('failed');
});
}

最佳答案

您尝试在新连接中使用 Promise 似乎有点误导。你会想要从 connect() 返回一个 promise 因此您可以使用它来了解服务器何时连接。

看起来你可能想要这样的东西:

function connect() {
return new Promise(function(resolve, reject) {
var server = new WebSocket('ws://mysite:1234');
server.onopen = function() {
resolve(server);
};
server.onerror = function(err) {
reject(err);
};

});
}

然后,您将像这样使用它:
connect().then(function(server) {
// server is ready here
}).catch(function(err) {
// error here
});

或与 async/await像这样:
async myMethod() {
try {
let server = await connect()
// ... use server
} catch (error) {
console.log("ooops ", error)
}
}

关于Javascript - 在 Websocket 上使用 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42304996/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com