如何将Socket.IO与promises一起使用?

Era*_*lel 5 node.js promise socket.io

作为持续努力的一部分,我正在使用blue-birdpromise库将我当前的回调技术改为promises .

我想用Socket.IO实现这个技术.

  • 如何使用Socket.IO与promises而不是回调?
  • 有没有标准的方法来使用Socket.IO?官方解决方案?

Sco*_*leo 1

Bluebird(以及许多其他 Promise库)提供了辅助方法来包装节点样式函数以返回 Promise。

var readFile = Promise.promisify(require("fs").readFile);

readFile("myfile.js", "utf8").then(function(contents){ ... });
Run Code Online (Sandbox Code Playgroud)

https://github.com/petkaantonov/bluebird/blob/master/API.md#promisification

返回一个函数,该函数将包装给定的nodeFunction。返回的函数将返回一个 Promise,而不是进行回调,该 Promise 的命运由给定节点函数的回调行为决定。节点函数应符合 node.js 约定,即接受回调作为最后一个参数,并使用错误作为第一个参数和第二个参数的成功值来调用该回调。

  • 明白了。大多数 websocket 模块使用 evented api。将基于回调的 api 转换为 Promise 很容易,而使用 eventemitter 的东西就不那么容易了。 (2认同)