;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

É tudo igual? Veja as 3 principais diferenças entre as airfryers do mercado

Reprodução
Imagem: Reprodução

Rodrigo Lara

Colaboração para Tilt, em São Paulo

20/03/2022 04h00

Quem decide comprar uma air fryer costuma encarar um dilema: a enorme quantidade de modelos disponíveis no mercado e preços. E a variação, aqui, vai além das marcas. Ela inclui questões como capacidade, modo de operação, formato e potência — que costuma ser próxima dos 1.500 W.

Para ajudar na sua escolha, listamos abaixo alguns pontos que diferenciam os modelos disponíveis no Brasil e que merecem a sua atenção antes de colocar uma air fryer na sua cozinha. Confira!

Capacidade

Esse é um dos fatores mais relevantes. Se você é uma pessoa que mora sozinha, não faz sentido ter uma air fryer com um cesto enorme — e, provavelmente, pagar mais caro por isso.

Dentro os modelos com cesto disponíveis, há variações de tamanho entre pouco mais de 2 litros até mais de 5 litros.

É importante lembrar também que, independentemente do tamanho da air fryer, encher ele de alimentos não é uma boa ideia, já que o cozimento — ou, se preferir, a "fritura" sem óleo— ocorre devido à circulação de ar quente em alta velocidade.

Sendo assim, quanto maior a quantidade de alimentos, maior a necessidade de agitar o cesto para que tudo cozinhe por igual.

Método de operação

Air fryers mais tradicionais costumam ser operadas de forma analógica. Isto é: por meio de seletores giratórios de temperatura e tempo de funcionamento.

De forma geral, isso não tende a ser um problemão, mas há modelos digitais, nos quais você seleciona exatamente os valores de tempo e temperatura.

A principal diferença, aqui, é que os modelos digitais tendem a ser mais precisos. Em air fryers "analógicas", é quase impossível determinar exatamente o tempo de funcionamento — se você gira o seletor até a marca de dez minutos, por exemplo, dificilmente acertará "na mosca".

Então, se você se preocupa com isso e tem uma grana extra para gastar, vale a pena investir em um modelo com seletores digitais.

Múltiplas funções

Nos últimos tempos começaram a surgir air fryers diferentonas: ao invés de um aparelho com uma cuba, esses modelos abrem como se fossem um forno convencional.

São os tais modelos "2 em 1" (ou 3, ou 4), que além da função de fritadeira sem óleo, funcionam como forno elétrico e churrasqueira. Há ainda produtos capazes de unir funções de air fryer com as de uma a de pressão elétrica.

Dada essa versatilidade, esses aparelhos acabam se afastando de air fryers convencionais, tanto em funções quanto em preço. Escolher por um deles, portanto, depende de dois fatores: se você realmente vai utilizar as habilidades extras do eletrodoméstico e se há disposição em pagar mais por isso.