尝试使用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);
答案 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