Apakah satu-satunya perbedaan antara Observable.of
dan Observable.from
format argumen? Suka Function.prototype.call
dan Function.prototype.apply
?
Observable.of(1,2,3).subscribe(() => {})
Observable.from([1,2,3]).subscribe(() => {})
Tidak terlalu. Saat meneruskan array ke Observable.from
, satu-satunya perbedaan antara itu dan Observable.of
cara argumen dilewatkan.
Namun, Observable.from
akan menerima argumen itu
objek yang dapat berlangganan, Janji, objek yang Dapat Diamati, Array, objek yang dapat diubah atau mirip array yang akan dikonversi
Tidak ada perilaku serupa untuk Observable.of
- yang selalu hanya menerima nilai dan tidak melakukan konversi.
Penting untuk dicatat perbedaan antara of
dan from
ketika melewati struktur mirip array (termasuk string):
Observable.of([1, 2, 3]).subscribe(x => console.log(x));
akan mencetak seluruh array sekaligus.
Di samping itu,
Observable.from([1, 2, 3]).subscribe(x => console.log(x));
mencetak elemen 1 dengan 1.
Untuk string, tingkah lakunya sama, tetapi pada level karakter.
Fakta menarik lainnya adalah Observable.of ([]) akan menjadi array kosong ketika Anda berlangganan. Di mana ketika Anda berlangganan Observable.from ([]) Anda tidak akan mendapatkan nilai apa pun.
Ini penting ketika Anda melakukan operasi berurutan dengan switchmap.
Contoh: Dalam contoh di bawah ini, saya menyimpan pekerjaan dan kemudian situs, dan kemudian berkomentar sebagai streaming.
jika tidak ada situs untuk disimpan, yaitu; data.length = 0 di bagian addSite, kode di atas mengembalikan Observable.of ([]) dan kemudian menyimpan komentar. Tetapi jika Anda menggantinya dengan Observable.from ([]), metode selanjutnya tidak akan dipanggil.
rffiddle
sumber
Perbedaan satu baris:
from : Emit item satu per satu dari array. Sebagai contoh
dari : Keluarkan seluruh array sekaligus. Sebagai contoh
CATATAN: dari operator dapat berperilaku seperti dari operator dengan spread Operator
sumber
https://stackblitz.com/edit/typescript-sckwsw?file=index.ts&devtoolsheight=100
sumber
from
: Buat diamati dari array, janji atau iterable. Hanya mengambil satu nilai. Untuk array, iterables dan string, semua nilai yang terkandung akan dipancarkan sebagai urutanof
: Buat nilai-nilai variabel yang dapat diobservasi, keluarkan nilai secara berurutan, tetapi array sebagai nilai tunggalsumber