O assíncrono pode ser uma verdadeira chave inglesa nas engrenagens de nossos fluxos de trabalho de programação, apesar do fato de que o assíncrono é o padrão moderno do JavaScript. Embora async/await ajuda, às vezes há confusão sobre a maneira de ter uma única função que retorna um valor, quer ele exista ou precise de uma Promise para ser recuperado.

O principal a ser lembrado é que as funções declaradas como async retornam automaticamente uma Promise, portanto, o senhor não precisa retornar explicitamente o conteúdo existente com Promise.resolve(content):

async function getValueOrFetch(ojbOrInfo) {
  // If the value exists, immediately return it
  if(ojbOrInfo) {
    return ojbOrInfo;
  }
  // Return the promise-based info
  return asyncFunctionToGetInfo(ojbOrInfo);
}

Vamos dar uma olhada em um exemplo real: retornar o conteúdo em cache em vez de fazer um fetch para recuperá-los:

const cache = {
  /* url: content */
};

// Async function that returns cached content or retrieves fresh content
async function getInfo(url) {
  // Check for value in cache
  if (cache[url]) {
    // Return the content, no need for Promise.resolve
    return cache[url];
  }
  // Get the content fresh
  const content = await fetch("https://www.facebook.com").then(r => r.text());
  cache[url] = content;
  return content;
}

Meu principal objetivo com esta postagem é fazer com que os senhores entendam que return Promise.resolve(data) não é necessário com funções assíncronas – o senhor pode simplesmente retornar o valor e ele será envolvido em uma promessa!

  • Tags META do Facebook Open Graph

    Não é segredo que o Facebook se tornou um importante gerador de tráfego para todos os tipos de sites. Hoje em dia, até mesmo as grandes corporações direcionam os consumidores para suas páginas do Facebook, em vez de para os sites corporativos diretamente. E, é claro, há widgets “Curtir” e “Recomendar” do Facebook em todos os sites. Um…

  • 9 demonstrações de telas incríveis

    O <canvas> tem sido uma revelação para os especialistas em visual entre nós. O Canvas fornece os meios para animações incríveis e eficientes com o bônus adicional de não usar Flash; em vez disso, esses desenvolvedores podem exibir suas incríveis habilidades em JavaScript. Aqui estão nove demonstrações inacreditáveis de canvas que…

  • Atualização do plug-in MooTools Typewriter Effect
  • Estilo específico do WebKit: -webkit-appearance

    Recentemente, eu estava examinando o horrível código-fonte da página inicial do Google quando notei que os botões “Google Search” e “I’m Feeling Lucky” tinham uma definição de estilo que eu não tinha visto antes: -webkit-appearance. O valor atribuído ao estilo era “push-button”. Eles são botões para que…