[英]Promisify for Observables in RxJS5
是否可以创建类似于Bluebird的promisify
工作方式的可观察promisify
?
参考: http : //bluebirdjs.com/docs/api/promise.promisify.html
someFunc = callback => handleCallback(callback)
someFunc = callback => (
new Promise(resolve => handleCallback(resolve))
.then(callback)
)
someFunc = callback => (
Promise.promisify(handleCallback)()
.then(callback)
)
同样,可观测对象也需要类似的要求:
someFunc = callback => (
Rx.Observable
.create(observer => (
handleCallback(() => observer.next())
))
.subscribe(callback)
)
someFunc = callback => (
Rx.Observable
.fromCallback(handleCallback)
.subscribe(callback)
)
处理此问题的正确方法是使用bindCallback
方法。
该问题的解决方案是:
someFunc = callback => (
Rx.Observable
.bindCallback(handleCallback)()
.subscribe(callback)
)
由于bindCallback
返回一个函数,因此您在最终回调arg之前传递的参数将传递给返回的函数。
还有一个bindNodeCallback
完全一样,只不过返回的第一个arg是可能的错误消息,正如您通常在Node.js回调中看到的那样。
由于这两种方法仅触发一次,然后自动取消订阅,因此您可能需要根据需要使用fromEventPattern
。 每当调用该回调函数时,它将继续触发observer.next()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.