Apa perbedaan antara Promise
dan Observable
di Angular?
Contoh pada masing-masing akan membantu dalam memahami kedua kasus. Dalam skenario apa kita bisa menggunakan setiap kasing?
Apa perbedaan antara Promise
dan Observable
di Angular?
Contoh pada masing-masing akan membantu dalam memahami kedua kasus. Dalam skenario apa kita bisa menggunakan setiap kasing?
Jawaban:
Janji
A
Promise
menangani satu peristiwa ketika operasi async selesai atau gagal.Catatan: Ada
Promise
perpustakaan di luar sana yang mendukung pembatalan, tetapi ES6Promise
tidak sejauh ini.Tampak
An
Observable
seperti aStream
(dalam banyak bahasa) dan memungkinkan untuk melewatkan nol atau lebih peristiwa di mana panggilan balik dipanggil untuk setiap peristiwa.Seringkali
Observable
lebih disukai daripadaPromise
karena menyediakan fiturPromise
dan banyak lagi. DenganObservable
itu tidak masalah jika Anda ingin menangani 0, 1, atau beberapa peristiwa. Anda dapat menggunakan API yang sama di setiap kasus.Observable
juga memiliki kelebihanPromise
untuk dibatalkan . Jika hasil permintaan HTTP ke server atau operasi async lain yang mahal tidak diperlukan lagi, makaSubscription
dari ituObservable
memungkinkan untuk membatalkan langganan, sementara padaPromise
akhirnya akan memanggil panggilan balik yang berhasil atau gagal meskipun Anda tidak memerlukan pemberitahuan atau hasil yang diberikannya lagi.Diamati menyediakan operator seperti
map
,forEach
,reduce
, ... mirip dengan arrayAda juga operator yang kuat seperti
retry()
, ataureplay()
, ... yang seringkali cukup berguna.sumber
Promise
, bersama denganasync
/await
membuat kode Anda rata lagi! Dalam sebagian besar situasi, dan dalam proyek-proyek yang tidak berurusan dengan ilmu roket, tidak perlu menulis fungsi-fungsi bersarang yang mengerikan dengan rantai metode yang rumit dan tidak perlu. Anda dapat menggunakanasync
/await
hari ini dengan transpiler, sepertiTypeScript
, dan menulis kode datar yang sebenarnya dapat dibaca manusia tanparxjs
boilerplate. Anda mungkin masih perlurxjs
kadang - kadang dalam situasi tertentu, karena itu memang memiliki banyak hal untuk ditawarkan.Keduanya
Promises
danObservables
memberi kami abstraksi yang membantu kami menangani sifat asinkron aplikasi kami. Perbedaan di antara mereka ditunjukkan dengan jelas oleh @ Günter dan @Relu.Karena cuplikan kode bernilai ribuan kata, lepaskan contoh di bawah ini untuk lebih mudah memahaminya.
Angular menggunakan Rx.js Observables alih-alih janji untuk berurusan dengan HTTP.
Misalkan Anda sedang membangun fungsi pencarian yang seharusnya langsung menampilkan hasil saat Anda mengetik. Terdengar akrab tetapi ada banyak tantangan yang datang dengan tugas itu.
HTTP
permintaan. Pada dasarnya, kami hanya ingin menekannya setelah pengguna berhenti mengetik bukan dengan setiap penekanan tombol.Demo hanya akan terdiri dari dua file:
app.ts
danwikipedia-service.ts
. Dalam skenario dunia nyata, kita kemungkinan besar akan memecah hal-hal lebih lanjut.Di bawah ini adalah implementasi berbasis janji yang tidak menangani kasus tepi yang dijelaskan.
wikipedia-service.ts
Kami menyuntikkan
Jsonp
layanan untuk membuatGET
permintaan terhadap Wikipedia API dengan istilah pencarian yang diberikan. Perhatikan bahwa kami menelepontoPromise
untuk mendapatkan dari aObservable<Response>
ke aPromise<Response>
. Akhirnya berakhir denganPromise<Array<string>>
sebagai jenis pengembalian metode pencarian kami.app.ts
Tidak terlalu mengejutkan di sini. Kami menyuntikkan
WikipediaService
dan mengekspos fungsionalitasnya melalui metode pencarian ke templat. Template hanya mengikat keyup dan panggilansearch(term.value)
.Kami membuka hasil dari Janji bahwa metode pencarian dari Layanan Wikipedia kembali dan mengeksposnya sebagai array sederhana string ke template sehingga kami dapat memiliki
*ngFor
loop melalui itu dan membangun daftar untuk kami.Lihat contoh implementasi berbasis Janji pada Plunker
Di mana diamati benar-benar bersinar
Mari kita mengubah kode kita untuk tidak memalu titik akhir dengan setiap penekanan tombol tetapi alih-alih hanya mengirim permintaan ketika pengguna berhenti mengetik 400 ms
Untuk mengungkap kekuatan super seperti itu, pertama-tama kita perlu mendapatkan
Observable<string>
yang membawa istilah pencarian yang diketikkan pengguna. Daripada mengikat secara manual ke acara keyup, kita bisa mengambil keuntungan dariformControl
arahan Angular . Untuk menggunakan arahan ini, pertama-tama kita perlu mengimporReactiveFormsModule
ke dalam modul aplikasi kita.app.ts
Setelah diimpor, kita bisa menggunakan formControl dari dalam template kita dan mengaturnya ke nama "term".
Dalam komponen kami, kami membuat turunan
FormControl
dari@angular/form
dan memaparkannya sebagai bidang di bawah istilah nama pada komponen kami.Di belakang layar, istilah secara otomatis menampilkan
Observable<string>
properti sebagai tempatvalueChanges
kami dapat berlangganan. Sekarang kita memilikiObservable<string>
, mengatasi input pengguna semudah memanggildebounceTime(400)
kitaObservable
. Ini akan mengembalikan yang baruObservable<string>
yang hanya akan mengeluarkan nilai baru ketika belum ada nilai baru untuk 400ms.Ini akan menjadi pemborosan sumber daya untuk mengirimkan permintaan lain untuk istilah pencarian yang sudah ditunjukkan oleh aplikasi kami. Yang harus kita lakukan untuk mencapai perilaku yang diinginkan adalah memanggil
distinctUntilChanged
operator tepat setelah kita menelepondebounceTime(400)
Lihat contoh implementasi yang dapat diamati pada Plunker
Sejauh saya menggunakan Http di Angular, saya setuju bahwa dalam kasus penggunaan normal tidak ada banyak perbedaan ketika menggunakan Observable over Promise. Tidak ada keuntungan yang benar-benar relevan di sini dalam praktiknya. Semoga saya bisa melihat beberapa use case lanjutan di masa depan :)
sumber
Baik Janji dan Pengamatan akan membantu kami bekerja dengan fungsi asinkron dalam JavaScript. Mereka sangat mirip dalam banyak kasus, namun, masih ada beberapa perbedaan antara keduanya juga, janji adalah nilai yang akan diselesaikan dengan
asynchronous
cara seperti panggilan http . Di sisi lain, yang dapat diamati berurusan dengan urutan peristiwa asinkron . Perbedaan utama di antara mereka tercantum di bawah ini:janji:
tampak:
Juga, saya telah membuat gambar grafis untuk Anda di bawah ini untuk menunjukkan perbedaan secara visual:
sumber
Promise
adalah cara yang salah untuk berpikir tentang bagaimana janji. ThePromise
'jawab s itu hanya untuk menangani keberhasilan atau kegagalan dalam cara yang kompatibel async .. Jika Anda ingin membatalkan permintaan http Anda membatalkan permintaan, bukan janji, dan membuat hasil membatalkan baik memenuhi atau menolak Janji. jsfiddle.net/greggman/ea0yhd4pJanji
Dapat diobservasi
Satu operator coba lagi dapat digunakan untuk mencoba lagi kapan pun diperlukan, juga jika kita perlu mencoba lagi berdasarkan pada beberapa kondisi coba lagi.
Catatan : Daftar operator beserta diagram interaktifnya tersedia di sini di RxMarbles.com
sumber
Ada satu kelemahan dari Observables yang hilang dalam jawaban. Janji memungkinkan untuk menggunakan fungsi async / menunggu ES7. Dengan mereka Anda dapat menulis kode asinkron seperti itu akan menjadi panggilan fungsi sinkron, sehingga Anda tidak perlu panggilan balik lagi. Satu-satunya kemungkinan bagi Observable untuk melakukan ini, adalah mengubahnya menjadi Janji. Tetapi ketika Anda mengonversinya menjadi Janji, Anda hanya dapat memiliki satu nilai kembali:
Bacaan lebih lanjut: Bagaimana saya bisa `menunggu` pada Rx Observable?
sumber
Janji dan Pengamatan keduanya hanya menangani panggilan tidak sinkron.
Inilah perbedaan di antara mereka:
Tampak
Janji
Hanya memancarkan nilai tunggal pada satu waktu
Memanggil layanan tanpa .then dan .catch
Tidak bisa dibatalkan
Tidak menyediakan operator apa pun
sumber
Meskipun jawaban ini terlambat, saya telah merangkum perbedaan di bawah ini,
Tampak:
function
yang mengambilan observer
dan mengembalikan afunction Observer: an object with next, error.
subscribe/unsubscribe
aliran datanya, memancarkan nilai berikutnya kepada pengamat,notify
pengamat tentangerrors
dan menginformasikan pengamat tentangstream completion
function to handle next value
, kesalahan dan akhir aliran (ui peristiwa, tanggapan http, data dengan soket web).multiple values
seiring waktucancel-able/retry-able
dan mendukung operator sepertimap,filter,reduce
dll.Observable.create()
- mengembalikan Observable yang dapat memanggil metode pada -Observer Observable.from()
- Mengubah array atau iterable menjadi -Observable Observable.fromEvent()
- Mengubah event menjadi Observable -Observable.fromPromise()
- Mengubah Promise menjadi Observable -Observable.range()
- Mengembalikan urutan bilangan bulat dalam rentang yang ditentukanJanji :
Janji merupakan tugas yang akan selesai di masa depan;
Janji menjadi
resolved by a value
;Janji ditolak dengan pengecualian;
Tidak
cancellable
dan itu kembalia single value
Sebuah janji memperlihatkan suatu fungsi
(then)
-Kemudian mengembalikan yang baru
promise
;-memungkinkan untuk
attachment
itu akan dieksekusi berdasarkanstate
;-
handlers
adalahguaranteed
untuk mengeksekusi diorder attached
;sumber
Saya baru saja berurusan dengan masalah di mana Janji adalah solusi terbaik, dan saya membagikannya di sini untuk siapa saja yang menemukan pertanyaan ini seandainya bermanfaat (inilah jawaban yang saya cari sebelumnya):
Dalam proyek Angular2 saya memiliki layanan yang mengambil beberapa parameter dan mengembalikan daftar nilai untuk mengisi menu drop down pada formulir. Ketika komponen formulir diinisialisasi, saya perlu memanggil layanan yang sama beberapa kali dengan parameter yang berbeda untuk menentukan sejumlah menu dropdown yang berbeda, namun jika saya cukup mengantri semua variabel untuk memanggil layanan, hanya yang terakhir berhasil dan kesalahan sisanya di luar. Layanan yang diambil dari basis data hanya dapat menangani satu permintaan pada satu waktu.
Satu-satunya cara untuk berhasil mengisi semua variabel menu dropdown adalah dengan memanggil layanan dengan cara yang mencegah permintaan baru dari diproses sampai permintaan terakhir selesai, dan mekanisme Janji / .Kemudian memecahkan masalah dengan baik.
Saya mendefinisikan fungsi-fungsi dalam komponen, dan kemudian memanggil initializeDropDowns () di ngOnInit.
Fungsi fetchValueList mengembalikan Promise, jadi panggilan pertama melewati listCode pertama dan ketika Promise terselesaikan, nilai return ada di variabel data di blok .then di mana kita bisa menugaskannya ke variabel this.firstValList. Karena fungsi telah mengembalikan data, kami tahu layanan telah selesai dan aman untuk menelepon lagi dengan kode list kedua, nilai kembali ada di variabel data di blok .then berikutnya dan kami menetapkannya ke variabel this.secondValList.
Kita dapat rantai ini sebanyak yang diperlukan untuk mengisi semua variabel, dan pada blok kode terakhir kita cukup menghilangkan pernyataan kembali dan blok berakhir.
Ini adalah kasus penggunaan yang sangat spesifik di mana kami memiliki layanan tunggal yang perlu dipanggil beberapa kali saat komponen diinisialisasi, dan di mana layanan harus menyelesaikan pengambilan dan mengembalikan nilai sebelum dapat dipanggil lagi, tetapi dalam kasus ini, Metode Janji / .itu ideal.
sumber
scan()
untuk membangun aliran yang dapat diamati berurutan. Namun, pendekatan Anda mungkin lebih eksplisit dan lebih mudah dipahami.Saya percaya semua jawaban lain harus menghapus keraguan Anda. Namun demikian, saya hanya ingin menambahkan bahwa observable didasarkan pada pemrograman fungsional, dan saya merasa sangat berguna fungsi-fungsi yang menyertainya seperti peta, peta datar, pengurangan, zip. Konsistensi yang dicapai web terutama ketika itu tergantung pada permintaan API adalah peningkatan yang brutal.
Saya sangat merekomendasikan dokumentasi ini , karena ini adalah dokumentasi resmi reactiveX dan saya merasa paling jelas di luar sana.
Jika Anda ingin masuk ke observable, saya akan menyarankan posting 3-bagian ini: http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/
Meskipun dimaksudkan untuk RxJava, konsepnya sama, dan itu dijelaskan dengan sangat baik. Dalam dokumentasi reactiveX, Anda memiliki persamaan untuk setiap fungsi. Anda harus mencari RxJS.
sumber
Janji:
Tampak:
Anda dapat menggunakan janji alih-alih yang terlihat saat memanggil HTTP di Angular jika diinginkan.
sumber
Gambaran:
Anda selalu dapat menggunakan observable untuk berurusan dengan perilaku asinkron karena observable memiliki semua fungsionalitas yang ditawarkan janji (+ ekstra). Namun, terkadang fungsi tambahan yang ditawarkan Observables ini tidak diperlukan. Maka itu akan menjadi biaya tambahan untuk mengimpor perpustakaan untuk menggunakannya.
Kapan menggunakan Janji:
Gunakan janji ketika Anda memiliki operasi async tunggal yang ingin Anda proses hasilnya. Sebagai contoh:
Jadi sebuah janji mengeksekusi beberapa kode di mana ia bisa menyelesaikan atau menolak. Jika salah satu penyelesaian atau penolakan disebut, janji beralih dari status tertunda ke status diselesaikan atau ditolak . Ketika kondisi janji terselesaikan,
then()
metode ini dipanggil. Ketika negara janji ditolak,catch()
metodenya disebut.Kapan menggunakan Observables:
Gunakan Observable ketika ada aliran (data) dari waktu ke waktu yang perlu Anda tangani. Aliran adalah urutan elemen data yang dibuat tersedia seiring waktu . Contoh aliran adalah:
Dalam Observable sendiri ditentukan ketika peristiwa berikutnya terjadi, ketika kesalahan terjadi , atau ketika Observable selesai . Kemudian kita bisa berlangganan ke observable ini, yang mengaktifkannya dan dalam berlangganan ini, kita bisa meneruskan dalam 3 panggilan balik (tidak harus selalu lulus semua). Satu panggilan balik akan dieksekusi untuk keberhasilan, satu panggilan balik untuk kesalahan, dan satu panggilan balik untuk penyelesaian. Sebagai contoh:
Saat membuat observable itu membutuhkan fungsi callback yang memasok pengamat sebagai argumen. Pada pengamat ini, Anda kemudian dapat memanggil
onNext
,onCompleted
,onError
. Kemudian ketika Observable berlangganan, itu akan memanggil panggilan balik yang sesuai dilewatkan ke berlangganan.sumber
Janji - Memberikan nilai masa depan tunggal. Tidak malas . Tidak bisa dibatalkan. Itu akan menolak atau menyelesaikan.
Diamati - Memberikan beberapa nilai masa depan. Malas. Dapat dibatalkan Ini memberikan metode lain peta langsung, filter, kurangi.
sumber
Kesamaan janji vs Teramati terlebih dahulu
Contoh yang bisa diamati sekarang. Di sini juga kita menyampaikan fungsi ke observable, pengamat untuk menangani tugas async. Tidak seperti tekad dalam janji itu memiliki metode berikut dan berlangganan pada saat itu.
Jadi keduanya menangani tugas async. Sekarang mari kita lihat perbedaannya.
Perbedaan dijanjikan vs Teramati
Janji
Tampak
sumber
Below are some important differences in promises & Observables.
sumber
Suatu Janji memancarkan satu peristiwa tunggal ketika aktivitas async selesai atau gagal.
Suatu Observable seperti Stream (dalam banyak bahasa) dan memungkinkan untuk melewatkan setidaknya nol atau lebih peristiwa di mana panggilan balik diperlukan untuk setiap peristiwa.
Sering Diamati lebih disukai daripada Janji karena memberikan highlights dari Janji dan banyak lagi. Dengan Observable, tidak masalah jika Anda perlu menangani 0, 1, atau berbagai acara. Anda dapat menggunakan API serupa untuk setiap kasus.
Janji: janji memancarkan nilai tunggal
Sebagai contoh:
Diamati: Memancarkan banyak nilai selama periode waktu tertentu
Sebagai contoh:
kita dapat memikirkan suatu yang dapat diamati seperti suatu aliran yang memancarkan banyak nilai selama periode waktu tertentu dan fungsi panggilan balik yang sama dipanggil untuk setiap item yang dipancarkan sehingga dengan suatu pengamatan kita dapat menggunakan API yang sama untuk menangani data asinkron. apakah data tersebut ditransmisikan sebagai nilai tunggal atau beberapa nilai dalam rentang waktu tertentu.
Janji:
Tampak:
Janji Sudut vs Yang Dapat Diamati
sumber
Promise memancarkan nilai tunggal sementara Observable memancarkan beberapa nilai. Jadi, saat menangani permintaan HTTP, Promise dapat mengelola satu respons untuk permintaan yang sama, tetapi bagaimana jika ada beberapa respons terhadap permintaan yang sama, maka kita harus menggunakan Observable. Ya, Dapat Diamati dapat menangani beberapa respons untuk permintaan yang sama.
Janji
Keluaran
Tampak
Keluaran
sumber
Janji
Tampak
Untuk pemahaman yang lebih baik, lihat https://stackblitz.com/edit/observable-vs-promises
sumber
Saya melihat banyak orang menggunakan argumen bahwa Observable "dapat dibatalkan" tetapi agak sepele untuk membuat Janji "dapat dibatalkan"
sumber
Jawaban singkat :
Diamati adalah lebih baik , ia memiliki semua Janji fitur ditambah fitur tambahan.
Jawaban panjang:
Janji:
Tampak:
sumber
Meskipun jawaban yang diterima baik secara umum, saya tidak berpikir itu menekankan bahwa ketika berhadapan dengan Komponen Angular Anda hampir selalu ingin menggunakan Observable karena mendukung pembatalan. Janji tidak dapat dibatalkan dan akan menyelesaikan bahkan jika komponen Anda hancur. Angular cenderung memaafkan sampai tidak.
Misalnya setiap deteksi perubahan manual pada komponen yang hancur akan menyebabkan pengecualian:
Jika komponen Anda dihancurkan sebelum janji itu diselesaikan, Anda akan mendapatkan
attempt to use destroyed view
kesalahan ketika janji itu diselesaikan.Atau, jika Anda menggunakan observable dengan pola takeUntil , maka segera setelah komponen Anda hancur berlangganan akan dibatalkan.
Ini sedikit contoh yang dibuat-buat tetapi mengeksekusi kode untuk komponen yang dihancurkan mungkin akan mengarah ke bug. Kecuali Anda benar-benar ingin melakukan itu karena beberapa alasan: p
sumber
Sesuatu yang saya temui yang tidak terlihat dari pembacaan pertama tutorial dan dokumen adalah ide multicasting.
Pastikan Anda mengetahui bahwa secara default, beberapa langganan akan memicu beberapa eksekusi di Observable. Berlangganan ganda ke satu panggilan HTTP yang dapat diobservasi akan memicu beberapa panggilan HTTP yang identik kecuali jika Anda
.share()
(aktifkan multicasting).Sebuah janji memaksa Anda untuk berurusan dengan satu hal pada satu waktu, membuka datanya, menangani pengecualian, memiliki dukungan bahasa untuk hal-hal keren seperti async / menunggu, dan sebaliknya sangat barebones.
Sebuah Observable memiliki banyak lonceng dan peluit, tetapi Anda perlu memahami kekuatan yang Anda kerjakan atau dapat disalahgunakan.
sumber
Janji:
Async Event Handler - Objek Promise mewakili penyelesaian akhir (atau kegagalan) operasi asinkron, dan nilai yang dihasilkannya.
Sintaks: Janji baru (pelaksana);
Misalnya:
Tentang Promise: Ini memiliki satu pipeline jadi, itu akan mengembalikan nilai hanya sekali ketika dipanggil. penangannya satu arah yang disebut begitu Anda mungkin tidak dapat membatalkan. sintaks yang berguna Anda dapat bermain-main, kapan () dan kemudian ()
Dapat diobservasi:
Dapat diamati adalah koleksi malas dari berbagai nilai dari waktu ke waktu. itu benar-benar pendekatan yang bagus untuk operasi async. itu dapat dilakukan dengan rxjs yang memiliki dukungan lintas platform dapat digunakan dengan sudut / bereaksi dll.
aktingnya seperti stream liner. bisa multi pipeline. jadi setelah ditentukan Anda dapat berlangganan untuk mendapatkan hasil pengembalian di banyak tempat.
Sintaks:
import * as Rx from "@reactivex/rxjs";
ke init:dll
untuk berlangganan:
RxLogger.getInstance();
Misalnya:
karena mendukung multi pipeline, Anda dapat berlangganan hasil di lokasi yang berbeda, ia memiliki banyak kemungkinan daripada janji.
Penggunaan: memiliki lebih banyak kemungkinan seperti
map, filter, pipe, map, concatMap etc
sumber
Perbedaan mendasar antara yang dapat diamati dan yang dijanjikan adalah:
sumber
Dapat diamati sering dibandingkan dengan janji. Berikut adalah beberapa perbedaan utama:
Dapat diobservasi bersifat deklaratif; perhitungan tidak dimulai sampai berlangganan. Janji dieksekusi segera pada penciptaan. Ini membuat observable berguna untuk menentukan resep yang dapat dijalankan kapan pun Anda membutuhkan hasilnya.
Dapat diamati memberikan banyak nilai. Janji memberikan satu. Ini membuat observable berguna untuk mendapatkan banyak nilai dari waktu ke waktu.
Dapat diobservasi membedakan antara rantai dan berlangganan. Janji hanya memiliki .then () klausa. Hal ini membuat dapat diamati berguna untuk membuat resep transformasi kompleks untuk digunakan oleh bagian lain dari sistem, tanpa menyebabkan pekerjaan yang harus dilakukan.
Berlangganan yang dapat diobservasi () bertanggung jawab untuk menangani kesalahan. Janji mendorong kesalahan ke janji anak. Ini membuat observable berguna untuk penanganan kesalahan yang terpusat dan dapat diprediksi.
Itulah perbedaan paling sederhana yang dapat Anda temukan di dokumen ANGULAR.IO. Jawaban sisanya diberikan oleh sebagian besar benar di tempatnya sendiri
sumber
Janji terfokus hanya untuk nilai-nilai tunggal atau penyelesaian, yang dapat diamati adalah aliran data.
Dapat diamati dapat dibatalkan tetapi janji tidak dapat dibatalkan.
Yang paling tidak dikenal, setidaknya bagi saya adalah
sumber
aliran nilai (dari 0 hingga beberapa nilai),
sumber
Observable and Promises membantu kita untuk bekerja dengan fungsi asinkron dalam JavaScript / naskah. Mereka sangat mirip dalam banyak kasus, namun, masih ada beberapa perbedaan di antara mereka.
sumber
Ada banyak jawaban untuk topik ini jadi saya tidak akan menambahkan yang berlebihan.
Tetapi untuk seseorang yang baru mulai belajar Observable / Angular dan bertanya-tanya mana yang harus digunakan dibandingkan dengan Promise , saya akan merekomendasikan Anda menjaga semuanya Teramati dan mengkonversi semua Janji yang ada dalam proyek Anda ke Observable.
Hanya karena kerangka kerja Angular itu sendiri dan komunitasnya semuanya menggunakan Observable. Jadi itu akan bermanfaat ketika Anda mengintegrasikan layanan kerangka kerja atau modul pihak ke-3 dan merantai semuanya bersama-sama.
Meskipun saya menghargai semua downvotes tetapi saya tetap bersikeras pendapat saya di atas kecuali seseorang memberikan komentar yang tepat untuk membuat daftar beberapa skenario yang mungkin masih berguna dalam proyek Angular Anda untuk menggunakan Promises over Observables.
Tentu saja, tidak ada pendapat yang 100% benar dalam semua kasus, tetapi setidaknya saya pikir 98% dari waktu untuk proyek komersial reguler diimplementasikan dalam kerangka kerja Angular, Observable adalah cara yang tepat untuk melangkah.
Bahkan jika Anda tidak menyukainya pada titik awal proyek hobi sederhana Anda, Anda akan segera menyadari hampir semua komponen yang berinteraksi dengan Anda di Angular, dan sebagian besar kerangka kerja pihak ketiga Angular yang ramah menggunakan Observables, dan kemudian Anda akan akhirnya secara konstan mengonversi Janji Anda untuk Diobservasi untuk berkomunikasi dengan mereka.
Komponen-komponen itu termasuk tetapi tidak terbatas pada: HttpClient, Form builder, modul / dialog material sudut, Ngrx store / effects dan ngx-bootstrap.
Faktanya, satu-satunya Janji dari Sistem Ekuler Angular yang saya tangani dalam 2 tahun terakhir adalah
APP_INITIALIZER
.sumber