Можем да използваме Promises и observables с Asynchronous в JavaScript. И двата подхода изглеждат еднакви, но имат разлики.
Обещания
В обещанията функцията връща обещание. На обещанието се присвоява задача, която да се изпълни, след като Async завърши. Async и Await са ключови думи, които по-често идват с Promise. Ключовата дума Await забавя изпълнението на функцията Async, докато обещанието изпълни задачата, която е присвоена. Promise преминава три състояния по време на своя цикъл на изпълнение.
- В изчакване
Думата „В очакване“ предава значението на „Все още не съм се взрял“. Това е първоначалното състояние на Обещанието.
- Изпълнено
Думата изпълнен има значението на „завършен“. На този етап задачата, възложена на Promise, беше изпълнена.
- Отхвърлен
Думата „Отхвърлено“ означава, че задачата е „Отказана“. В този етап задачата не е изпълнена и е изведена грешка.
Можем да използваме Promises, когато имаме работа с една асинхронна операция.
Наблюдаеми
Наблюдаемите могат да се използват, когато трябва да обработваме последователност от данни във времето. Наблюдаемите се случват, когато настъпи следващото събитие, когато възникне грешка и когато задачата е изпълнена. Функция за обратно извикване се използва с Observable за предоставяне на аргумент на Observable. Трите налични обратни повиквания са,
- напред
- onCompleted
- onError
Наблюдаемите преминават четири етапа,
- Създаване
На този етап се инициира наблюдаем и можем да използваме функцията create, за да инициираме наблюдаем.
- Абонамент
Трябва да се абонираме за наблюдаем, за да работи. Тук използваме метода наабониране.
- Изпълнение
Изпълнението на наблюдаема е вътрешността на блок.
- Унищожаване
Унищожаването е етапът, в който се появява грешка или се наблюдава завършване. Въпреки че понякога трябва ръчно да го отпишем, в повечето случаи след унищожаването на наблюдаем абонаментът се отписва автоматично.
Наблюдаеми срещу обещания
- Наблюдаемите са мързеливи, когато се сравняват с обещанията. Функцията за абонат се извиква само когато наблюдаемият бъде абониран. Но веднага след създаването на обещание се извиква функцията изпълнител.
- Наблюдаемите могат да предоставят множество стойности, докато обещанията доставят една стойност.
- След иницииране на обещание не можем да го отменим. Но можем да отменим наблюдаем, след като е иницииран, като просто го отпишем.
- Обещанието винаги е асинхронно и можем да използваме само Async/Await ключови думи. Но наблюдаемите могат да бъдат както асинхронни, така и синхронни.
Надявам се, че тази статия ще бъде полезна за разбирането на Promises и Observables. Ще можете да разберете какви са разликите между тях.
Благодарим ви!!!