表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

148/210

RxJSとはなんぞや?④promise から observable を作成する

なんとなくですがRxJSとも仲良くなってきた気がします。


その上であえて言いたいのですが、Angular日本語ドキュメント|RxJSライブラリの『Observable 作成関数』のサンプルの順番、「promise から observable を作成する」を最後にした方が良いんじゃないかなと思います。


準備のほぼ不要な簡単な例からやった方が躓きが少ないと思うんです。


初心者はRxJSなんて触らないかもしれませんが、初心者には(そして私には)荷が重い感じです。


Ajaxもそうですが、他の2つのサンプルみたいにほぼ準備なしで試せるコードは本当にありがたいし、それを試してからならpromise?fetch?と言う人にも多少は敷居が低いんじゃないでしょうか?

(AJAX リクエストから作成(説明割愛予定)もそんな感じですよね?)


ボヤキはこれくらいにして、サンプル試します。


Angular日本語ドキュメント|RxJSライブラリ

promise から observable を作成する

https://angular.jp/guide/rx-library#observable-%E4%BD%9C%E6%88%90%E9%96%A2%E6%95%B0


---------------------------------------------------------------

import { from, Observable } from 'rxjs';


// Create an Observable out of a promise

const data = from(fetch('/api/endpoint'));

// Subscribe to begin listening for async result

data.subscribe({

next(response) { console.log(response); },

error(err) { console.error('Error: ' + err); },

complete() { console.log('Completed'); }

});

---------------------------------------------------------------


import以下の部分を適当な関数の中にしまうとエラーは無いようですが、Import内のObservableが使用されていないになっている点が若干気にかかります。


その関数を実行すると、以下のように少し予想外の結果です。


・'/api/endpoint'は用意していないので404(Not Found)エラーがコンソールログに表示

 (ここまでは予想通り)

・LocalHostからレスポンスが(404エラーであっても)返ってきているので正常終了処理実行

・したがってerror(err) { console.error('Error: ' + err); }処理はスルー

・当然complete() { console.log('Completed'); }は実行


URL'/api/endpoint'を存在するファイルにすれば、問題なく処理されます。


つまりこのケースでのerrは、サーバ側のプログラムが決めると考えて良いのかも?

(追記:ドメインをまたいだCORSエラーはErrorとして処理されます)


ただしWebサーバ(この場合はLocalHostですが)が返すresponseをどう処理するかについては、勉強する機会がなかったので、今後、機会があれば・・・という事にさせていただきます。


どこかで見た感想ですが、複数のpromise(この場合で言えばサーバからの値の取得)を組み合わせたりするのでなければ、RxJS使う必要はあまりないかもです。

(一つしかイベントの無いストリームな訳ですから)


逆に連鎖的に色々させたりするような色々な関数が用意されているようですので、用途と知識によっては便利なのだと思います。


次回は、私なりのまとめとしてゲームブックでサイコロを連続して振った時の統計情報の記録を試してみたいと思います。(Cookie Clickerみたいな感じ?)

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ