我正在努力争取某些东西 - 我猜这意味着我误解了并且做了些傻事
我有一个observable,需要使用它来创建一些对象,将其发送到服务器进行处理,将服务器的结果与我发送的对象合并,然后将其转换为可观察对象,这样我想做什么(我认为)就像是
var theNewObservable = my.observable.things.select(function(thing) {
var dataToSend = generateMyJavascriptObjectFrom(thing);
var promise = $.ajax({
type: 'POST',
url: http://somewhere.com,
data: dataToSend
}).promise();
return rx.Observable.fromPromise(promise).subscribe(function(data, status, jqXHR) {
var infoFromServer = jqXHR.getResponseHeader('custom-header-returned');
// I'm wanting this to be the thing other code can subscribe to
return { infoFromServer: dataToSend };
}, function(err) {
alert('PC LOAD LETTER!');
console.error(err);
});
}
});
theNewObservable.subscribe(function(combinedInfo) { console.log(combinedInfo) };
我希望{infoFromServer: dataToSend}
我得到一个AutoDetachObserver
,我可以看到有一个onNext带有ajax onSuccess签名,所以我显然做了些傻事
答案 0 :(得分:4)
有些事情应该有所帮助:
1)subscribe
方法是一种终端方法,因为它不会返回任何内容。这是Observer
附加的地方,因此在subscribe
2)onNext
的{{1}}方法只能使用一个值来包含所有消息数据。
由于jQuery的subscribe
对此不会表现良好,因此您有两种选择。首先,您可以将RX-DOM项目用于Promise
ajax版本。或者你需要包装promise方法。如果您还需要等待响应,则应该使用Observable
代替,这将允许您触发承诺,然后等待其返回并将响应映射到原始请求。
selectMany