LoginSignup
14
12

More than 5 years have passed since last update.

RxJSのof と fromの違い

Last updated at Posted at 2018-12-10

[前提] of、fromはobservableを作るもの

ofとfromは、Observableにするメソッドなので、前提としてObservableの概念を学ばなければいけません。
https://tech.recruit-mp.co.jp/front-end/rxjs-intro/

subscribeの説明

subscribeはobservableに付随するメソッドです。
observableを川の流れと例えると、subscibeは下流に来た値を流す処理です。
以下がsubscribeメソッドの中身です。


subscribe(
  (x) => console.log(x),                    // onNext
  (error: Error) => console.error(error),   // onError
  () => console.log('Completed!!')          // onComplete
)
  • 新しい値が取得できたら、onNextメソッド、
  • エラーが出たら、onErrorメソッド、
  • 全ての値が流れ切った時に、OnCompleteメソッドが発火します、

[of] 引数の値を,observableにする

引数の値をObservableのデータにします。


// numberをobservableにして、引数である、1と2をストリームのデータにします。
 const number = of(1,2);
// subscribeで、1と2を取り出します。
 number.subscribe(val => console.log(val))

=> 1,2

[from] 引数の値を分解した要素を、observableの値にする

fromは、引数の値を分解して、observebleの値にします。

配列の場合


// 配列を、引数に入れる。fromで、要素が分解されるので、1と2をストリームのデータにします。
 const array = from([1,2])
// subscribeで、1と2を取り出します。
 array.subscribe(val => console.log(val))

=> 1,2

配列型オブジェクトの場合

配列とほぼ同じです。


 const numbers: Number[]
 numbers = [1,2]
 const array = from(numbers)
 array.subscribe(val => console.log(val))
=> 1,2

Stringの時


// stringを引数に入れる。stringの文字列が分解されて,"s","t","r","i","n","g"を
 const string = from("string");
// subscribeで、"s","t","r","i","n","g"を取り出す。
  string.subscribe(val => console.log(val))
=> "s","t","r","i","n","g"

Promiseの時


function numberOne()  {
 return 1
};

function numberTwo(){
 return 2
};


const promise = new Promise((numberOne, numberTwo) => {
    const one = numberOne();
    const two = numberTwo();
    setTimeout(() => {
        return [one, two]
    });
}



const promise = promise()

const result = from(promise);
result.subscribe(val => console.log(val));
=> 1,2

まとめ

       of from
役割 Observableにする Observableにする
引数の数 複数 一つ
引数にする値 配列、配列型オブジェクト、Promise,Observable,string

引用

14
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
12