2017-05-11 98 views
1

目前可以明確地創建一個可觀察到如下:如何創建一個從節點請求可觀察的RxJs

const Rx = require("rxjs"); 
const request = require("request"); 

     return Rx.Observable.create(function (observer) { 
      request(options, function (error, response, body) { 
       if (error) { 
        observer.error(error); 
       } else { 
        observer.next(response); 
        observer.complete(); 
       } 
      }); 
     }); 

有沒有一種簡便方法與RxJs庫(或另一個庫)做到這一點?

+2

'bindNodeCallback' http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-bindNodeCallback –

+0

您已經在使用RxJS庫進行操作了... – martin

回答

0

這是我的解決方案:

return (options) => { 
     const boundCallback = Rx.Observable.bindNodeCallback(request, toResponseOnly); 
     return boundCallback(options); 
    }; 

function toResponseOnly(response) { 
    return response; 
} 

,以確保僅響應被傳遞要求的第二個功能,否則PARAMS給回調被傳遞爲一個數組。