基于promise的net.createServer版本

时间:2018-02-10 17:25:58

标签: javascript node.js ecmascript-6

如果我使用net.createServer创建TCP服务器,我可以使用回调在连接处理程序中执行conn.on('data' ...)。是否有返回Promise的版本,因此可以与async/await一起使用?或者我应该为此使用某些第三方库,还是为conn.on('data' ...)滚动我自己的包装?

1 个答案:

答案 0 :(得分:2)

conn.on('data' ...)不能用promise替换,因为它是一个事件监听器,这意味着可以多次调用回调函数。承诺无法多次解决。

如果您确定data事件只会发出一次,您可以编写一个包装器,它将返回一个承诺:

const onData = conn =>
  new Promise((resolve, reject) => {
    conn.on('data', resolve);
    conn.on('error', reject);
  });