Как фронтенд-разработчик, если вы еще не слышали о Promise в Javascript, что ж…
По крайней мере, вы уже слышали об этом! И это действительно удивительно.
Промис — это стандартный способ обработки асинхронных операций, таких как вызов API. Он всеобъемлющий, но элегантный, особенно с серией асинхронных операций и обработкой связанных с ними ошибок.
Он широко поддерживается современными браузерами. Но, конечно, IE не из современных, поэтому не забудьте найти promise-polyfill для своих пользователей IE.
В этом блоге я расскажу об основных способах использования Promise, давайте начнем.
Функция promise будет выглядеть так:
new Promise(function (resolve, reject) {
var data = asyncCall(); // could be API calls
if( data ) {
resolve(data); // success
} else {
reject(data); // fail
}
});
Во-первых, нам нужно объявить, что это «новый» промис, вы можете поместить свои асинхронные вызовы и сообщить промису, как обрабатывать ответ с помощью «разрешить» и «отклонить». Вы можете рассматривать `resolve` и `reject` как две функции обратного вызова, `resolve`, когда вы подтверждаете, что получили то, что ожидаете, и отказываться, если произошло что-то плохое.
Вот краткий пример, Поиграй здесь
var aync1 = function() {
return new Promise(function(resolve, reject){
// Wait 1s and alert
setTimeout(function(){
resolve("Hello Promise");
}, 1000);
});
}
aync1().then(function (resp) {
alert(resp);
});
Если что-то идет не так, вы хотите поймать и справиться с этим, поиграйте здесь.
var aync2 = function() {
return new Promise(function(resolve, reject){
// Wait 2s and alert
setTimeout(function(){
// pretend we got something wrong.
reject("error");
}, 1000);
});
}
aync2().then(function (resp) {
alert("This will not be called");
}).catch(function(err){
alert(err);
});
Здесь я быстро продемонстрировал базовое использование Promise, вы можете подумать: «О, обратные вызовы тоже могут делать то же самое». Вы правы, но в следующем блоге я покажу настоящую мощь Promise, спасибо за внимание.
Первоначально опубликовано на https://www.loginradius.com.