Node.js WebSockets客户端待定承诺

时间:2019-05-04 15:10:59

标签: javascript node.js websocket promise

尝试使用Promise作为Node.js客户端从WebSocket连接捕获所有数据。在收到所有消息和console.logging 'Promise { <pending> }'之前,脚本已退出,我希望它记录“响应#1 |再见。

const WebSocket = require('ws');
const ws = new WebSocket('wss:url');

let results = new Promise(function(resolve, reject) {
    ws.on('open', function open() {
      ws.send('hello');
    });
    let receivedResults = '';
    ws.on('message', function incoming(data) {
        if (data == 'goodbye') {
            receivedResults += ' | ' + data;
            resolve(result);
        } else {
            receivedResults = data;
        }
    });
});
console.log(results);

2 个答案:

答案 0 :(得分:0)

要使其记录response #1 | goodbye,您将需要等待它解决。

results.then(data => console.log(data));

答案 1 :(得分:0)

在打印results时,它只是一个处于等待解决状态的promise对象,正在等待解决,此时您将无法获得结果,它是最近创建的。要等待解决,您需要执行promise的'then'方法:

results.then(myResponse => {
 console.log(myResponse);
 // do more...
});

我推荐这个讲座来了解node.js上的异步行为 https://www.youtube.com/watch?v=8aGhZQkoFbQ