*Pemerhatian * dan *Janji * kedua-duanya digunakan untuk mengendalikan operasi tak segerak dalam JavaScript, tetapi ia mempunyai beberapa perbezaan utama:
Janji
- Nilai Tunggal: Janji mengendalikan satu peristiwa tak segerak dan mengembalikan satu nilai (atau ralat).
- Bersemangat: Janji mula dilaksanakan serta-merta selepas penciptaan.
- Tidak Boleh Dibatalkan: Setelah Janji dimulakan, ia tidak boleh dibatalkan.
- Sintaks: Menggunakan .then(), .catch(), dan .finally() untuk operasi rantaian.
Contoh:
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise resolved!');
}, 1000);
});
promise.then((value) => {
console.log(value);
});
Boleh diperhatikan
- Berbilang Nilai: Boleh diperhatikan boleh mengeluarkan berbilang nilai dari semasa ke semasa.
- Malas: Yang boleh diperhatikan tidak mula mengeluarkan nilai sehingga ia dilanggan.
- Boleh Dibatalkan: Langganan kepada Observables boleh dibatalkan, menghentikan pelepasan nilai.
- Sintaks: Menggunakan .subscribe() untuk mengendalikan nilai yang dipancarkan, ralat dan penyiapan.
Contoh:
import { Observable } from 'rxjs';
const observable = new Observable((subscriber) => {
subscriber.next('First value');
setTimeout(() => {
subscriber.next('Second value');
subscriber.complete();
}, 1000);
});
const subscription = observable.subscribe({
next(value) {
console.log(value);
},
complete() {
console.log('Observable complete');
}
});
// To cancel the subscription
subscription.unsubscribe();
Bila Gunakan Setiap
- Gunakan Promises apabila anda perlu mengendalikan satu operasi tak segerak.
- Gunakan Observables apabila anda perlu mengendalikan berbilang peristiwa atau nilai tak segerak dari semasa ke semasa dan apabila anda memerlukan lebih kawalan ke atas strim data (cth., pembatalan, transformasi).
Atas ialah kandungan terperinci Boleh diperhatikan v/s Janji. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Kenyataan:Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn