
В света на програмирането и уеб разработката е важно да знаете как да се справяте с проблеми с изчакване. Грешките могат да се появят поради различни причини като забавяне на мрежата, натоварване на сървъра и т.н. Стратегията за обработка на изчаквания се превръща в гръбнак за устойчивостта на програмата.
За да разберем по-добре времето за изчакване, нека разгледаме случая с автомобилен двигател. Ако завъртите ключа за запалване, очаквате двигателят да започне да работи след по-малко от няколко секунди. Ако не стане, може да изчакате още няколко секунди, преди да изключите запалването и да опитате да стартирате двигателя отново. Това прагово време, преди да решите да спрете и рестартирате, е подобно на времето за изчакване в света на програмирането.
Решението Typescript
Typescript, статично въведен супернабор на JavaScript, дава на разработчиците инструментите, необходими за ефективна обработка на изчакванията. За да управляваме времето за изчакване, ние създаваме обещание, което или ще бъде разрешено успешно в рамките на определения срок, или ще бъде отхвърлено, ако го надвиши. Ето един пример:
function timeout(ms: number, promise: Promise<any>): Promise<any> { return new Promise(function(resolve, reject) { setTimeout(function() { reject('Timed out in '+ ms + 'ms.'); }, ms); promise.then(resolve); }); }
Разбиране на Кодекса
Разработчиците често смятат, че е по-лесно да разберат проблемите, когато решението е разделено на по-малки управляеми части.
Точка 1: Първо създаваме функция, наречена „timeout“, която приема „ms“ и „promise“ като параметри. 'ms' е ограничение за изчакване в милисекунди, а 'promise' е оригиналното обещание, което се опитваме да изпълним.
function timeout(ms: number, promise: Promise<any>)
Точка 2: В рамките на функцията 'timeout' връщаме ново обещание с параметри 'resolve' и 'reject'.
return new Promise(function(resolve, reject)
Точка 3: Използваме setTimeout, за да задействаме „отхвърляне“, ако нашият лимит (ms) е достигнат преди обещанието да бъде разрешено.
setTimeout(function() { reject('Timed out in '+ ms + 'ms.'); }, ms);
Точка 4: Ако първоначалното обещание се разреши преди ms, ние просто предаваме резолюцията заедно с „promise.then(resolve)“
promise.then(resolve);
По този начин, чрез налагане на таймаут, можем да гарантираме, че нашият код няма да чака безкрайно време за отговор.
Свързани библиотеки и функции
Typescript не идва с предварително изградена библиотека за управление на изчакванията. Въпреки това е удобен поради тясната си връзка с JavaScript и обширната екосистема от npm модули. Някои свързани функции на JavaScript са:
- SetTimeout(): Това е функция, част от Window Timing Events, която поставя на пауза изпълнението на кода за определен период от време и след това изпълнява кода.
- ClearTimeout(): Тази функция спира изпълнението на кода, който е бил забавен от функцията setTimeout().
- SetInterval(): Подобно на setTimeout() във функцията, но вместо да изпълни кода веднъж след определено време, setInterval() многократно изпълнява кода след зададен интервал от време, докато се извика clearInterval().
- ClearInterval(): Тази функция се използва за спиране на изпълнението на кода, зададен от setInterval().
Силата на грациозното обработване на изчакванията в кода на Typescript е огромна. Макар и сравнително просто, разбирането и използването на подходящи методи за изчакване не само гарантира безпроблемно потребителско изживяване, но също така повишава ефективността и професионализма на вашата програма.