【发布时间】:2017-02-17 18:26:59
【问题描述】:
我在纯 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');
});
}
【问题讨论】:
-
是什么让您认为可以成功连接?
-
仅供参考:您的代码会将
server.onopen设置为最后一个函数(警报失败的那个) - 您可以将.then和.catch更改为任何值,它仍然会做同样的事情.. . 实际上它与var x = ({}).then = ({}).catch = ({hello:'world'})相同... x 将是{hello: 'world'}并且具有.then和.catch属性的中间对象被丢弃 -
感谢您的解释,肯定有帮助!
标签: javascript websocket promise