如何从节点请求创建 RxJs Observable
How to create an RxJs Observable from a node request
目前可以显式创建一个可观察对象如下:
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();
}
});
});
是否有 shorthand 方法可以使用 RxJs 库(或其他库)做到这一点?
这是我的解决方案:
return (options) => {
const boundCallback = Rx.Observable.bindNodeCallback(request, toResponseOnly);
return boundCallback(options);
};
function toResponseOnly(response) {
return response;
}
第二个函数需要确保只传递响应,否则回调的参数将作为数组传递。
目前可以显式创建一个可观察对象如下:
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();
}
});
});
是否有 shorthand 方法可以使用 RxJs 库(或其他库)做到这一点?
这是我的解决方案:
return (options) => {
const boundCallback = Rx.Observable.bindNodeCallback(request, toResponseOnly);
return boundCallback(options);
};
function toResponseOnly(response) {
return response;
}
第二个函数需要确保只传递响应,否则回调的参数将作为数组传递。