تفاوت بین وعده ها و قابل مشاهده ها

وعده ها و قابل مشاهده هر دو مکانیسمی برای مدیریت عملیات ناهمزمان در جاوا اسکریپت هستند، اما از نظر عملکرد و رفتار تفاوت هایی با هم دارند.
آ وعده یک شی است که نشان دهنده تکمیل یا شکست نهایی یک عملیات ناهمزمان و مقدار حاصل از آن است. برای رسیدگی به یک رویداد ناهمزمان منفرد استفاده می شود. هنگامی که یک وعده ایجاد می شود، در یکی از سه حالت است: در حال انتظار، وفا شده، یا رد شده. یک وعده در حال انتظار در حالت اولیه است، و زمانی که عملیات ناهمزمان کامل میشود، به انجام (حلشده) یا رد (با یک خطا) منتقل میشود. Promises معمولاً با متدهای .then() و .catch() برای رسیدگی به تحقق یا رد قول استفاده می شود.
مثال:
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Operation completed successfully');
}, 1000);
});
promise.then((result) => {
console.log(result);
}).catch((error) => {
console.error(error);
});
یک قابل مشاهدهاز سوی دیگر، ساختار قدرتمندتر و انعطاف پذیرتری است که در کتابخانه RxJS معرفی شده است که مفهوم وعده ها را گسترش می دهد. قابل مشاهدهها جریانی از مقادیر را در طول زمان نشان میدهند که امکان مدیریت چندین رویداد ناهمزمان را فراهم میکنند. آنها می توانند مقادیر صفر یا بیشتر را منتشر کنند و همچنین در مورد خطاها یا تکمیل جریان مطلع شوند. مشاهده پذیرها با اپراتورهای مختلف و مکانیسم های اشتراک برای رسیدگی به این رویدادها استفاده می شوند.
مثال:
import { Observable } from 'rxjs';
const observable = new Observable((observer) => {
setTimeout(() => {
observer.next('First value');
}, 1000);
setTimeout(() => {
observer.next('Second value');
}, 2000);
setTimeout(() => {
observer.next('Third value');
observer.complete(); // Notify completion
}, 3000);
});
const subscription = observable.subscribe(
(value) => console.log(value),
(error) => console.error(error),
() => console.log('Observable completed')
);
// Later, if necessary, you can unsubscribe
subscription.unsubscribe();
وعده ها
- وعده ها یک ارزش واحد هستند که یا حل می شوند یا رد می شوند.
- وعده ها مشتاق هستند، یعنی بلافاصله پس از ایجاد آنها اجرا می شوند.
- وعدهها فقط میتوانند یک ارزش را مدیریت کنند.
- Promises چندپخشی نیستند، به این معنی که فقط یک بار می توان آنها را مشترک کرد.
قابل مشاهده
- قابل مشاهده ها جریانی از مقادیر هستند که می توان آنها را حل کرد، رد کرد یا مقادیری را منتشر کرد.
- مشاهده پذیرها تنبل هستند، یعنی تا زمانی که مشترک نشوند اجرا نمی شوند.
- مشاهده پذیرها می توانند چندین مقدار را مدیریت کنند.
- مشاهده پذیرها چندپخشی هستند، به این معنی که می توان آنها را چندین بار مشترک کرد.
تفاوت های بین وعده می دهد و قابل مشاهده:
ویژگی | وعده ها | قابل مشاهده |
---|---|---|
ارزش واحد | ارزش | جریان ارزش ها |
اجرا | مشتاق | تنبل |
لغو | قابل لغو است | قابل لغو است |
اشتراک های متعدد | خیر | آره |
رسیدگی به خطا | خطاها را به مشترکین منتقل می کند | خطاها را به مشترکین منتقل می کند |
وعده ها:
- ایجاد درخواست API
- در انتظار دانلود فایل
- باز کردن کادر محاوره ای
قابل مشاهده:
- پخش جریانی داده ها از سرور
- مدیریت رویدادهای ورودی کاربر
- گوش دادن به رویدادهای شبکه