JavaScript/NodeJS - 添加 promise 作为扩展方法

标签 javascript node.js

对此可能有一个简单的答案,但我只需要在 C# 中使用扩展方法(他们甚至在 JS 中调用它吗?)..

我有一个使用事件的第 3 方库。我需要在事件被调用后 调用一个函数。我可以通过 promise 轻松地做到这一点,但第 3 方库是在 ES6 之前编写的,并且没有内置 promise 。这是一些示例代码 -

wRcon.on('disconnect', function() {
  console.log('You have been Disconnected!')
})

理想情况下,我希望能够实现这样的东西 -

wRcon.on('disconnect', function() {
  console.log('You have been Disconnected!')
}).then(wRcon.reconnect())

总结一下我的问题,我如何扩展 wRcon.on 以允许 promise (或其他一些回调方法)?

最佳答案

Promises 和 events,虽然表面上看起来很相似,但实际上解决了 Javascript 中的不同问题。

Promises 提供了一种管理异步操作的方法,可以在预期结果的情况下管理异步操作,但您只是不知道需要多长时间。

事件提供了一种管理异步操作的方法,在某些情况下可能 发生,但您不知道它何时(甚至是否)发生。

在 Javascript 中,没有简单的方法在两者之间“接口(interface)”。

但是对于您给出的示例,有一个简单的解决方案:

wRcon.on('disconnect', function() {
  console.log('You have been Disconnected!')
  wRcon.reconnect()
})

这可能不如您的解决方案优雅,如果您打算在末尾附加更长的 .then() 处理程序链,它就会崩溃,但它会完成工作。

关于JavaScript/NodeJS - 添加 promise 作为扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43474730/

相关文章:

javascript - 与 React hooks 的 setState 回调等效

node.js - Node/Express,如何修改静态文件但仍然可以访问 req.params?

javascript - 将不同的数组映射到同一个组件

javascript - Express 路由器无法按预期使用子目录

node.js - 使用 Passport 本地和 PAM 模块进行身份验证

javascript - 有没有办法在 CronJobs 中获取毫秒数?

javascript - 箭尾测试失败的正则表达式匹配

javascript - 如何在 ngIf 中使用相同的模板

javascript - ckeditor allowedExtraContent 带有结束 html 标签

javascript - 仅选择带有 gulp 和 'main-bower-files' 的缩小文件?