flatMap
はRx.DOM.getJson()
と動作するのに苦労しているし、何が間違っているのか分からない。Rx.Dom.getJsonからRx.DOM.getJsonへのRxJsのフラットマップは発砲しない
HTML
<!DOCTYPE html>
<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.1.0/rx.all.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs-dom/7.0.3/rx.dom.js"></script>
<script src="https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-xta1/t39.3284-6/12624096_747368668729465_1053913233_n.js"></script>
<script src="https://fbcdn-dragon-a.akamaihd.net/hphotos-ak-xaf1/t39.3284-6/12624065_1518596455100766_427485197_n.js"></script>
<title>JS Bin</title>
</head>
<body>
<button id='fetch'>Fetch</button>
<div id="content"></div>
</body>
</html>
javascriptの
// Actions
const Actions = {
LoadPosts: 'LoadPosts'
};
// Disptacher
const Dispatcher = new Rx.Subject();
function send(action) {
Dispatcher.onNext({action: action});
}
// Stores
const url = 'http://jsonplaceholder.typicode.com/posts';
const FetchedPosts$ = Dispatcher
.filter(x => Actions.LoadPosts === x.action)
.do(x => console.log(x))
.flatMap(() => {
console.log('flat');
return Rx.DOM.getJSON(url);
})
.do(x => console.log('after', x));
// Views
const fetchButton = document.getElementById('fetch');
const Fetch$ = Rx.Observable.fromEvent(fetchButton, 'click')
.do(x => send(Actions.LoadPosts));
const PostsView$
= FetchedPosts$.map(posts => posts.map(post => <li>{post.title}</li>));
const RootView$ = Rx.Observable.merge(Fetch$, PostsView$);
RootView$.subscribe(
content => ReactDOM.render(
<ul>{content}</ul>,
document.getElementById('content')
)
);
出力
[object Object] {
action: "LoadPosts"
}
"flat"
"Script error. (line 0)"
だから出力は、私はグラムだということを示して私はフラットマップへのettingと私はRx.DOM.getJSON(url)
を引っ張って、それを購読すれば、私は返される値を書くことができます。しかし、flatMapから何も返されず、Rxが以下に示すようにリクエストをキャンセルしていることを示すネットワークタブにエラーが表示されます。
ここJsBinだ:私はちょうど削除が反応していることに気づいhttp://jsbin.com/geruzo/edit?js,console,output
編集 Rx.DOM呼び出しが成功することができます。
詳細返信いただきありがとうございます。.catch()のエラーを記録するための良いパターンについての詳細はありますか? –
私たちはまた、最高のパターンを探しています。しかし、今のところ、catch()では、Observable.empty()をログに記録して戻すか、エラーオブジェクトを出力するobservableを返して返すことができ、UIに何らかのエラーが表示されます。 – omerts