Pesquisa de site

javascript - Eu preciso usar async se a função retorna uma promessa?


Eu tenho esta função em uma classe. Ela está retornando uma promessa.

static blabla(): Promise <number> {
  return new Promise < number > ((resolve) => {
    resolve(999);
  });
}

Esta função funciona bem, mas eu gostaria de confirmar se eu preciso (para uma boa prática) usar async como

static async blabla(): Promise <number>

Resposta #1

Você não precisa usar async se sua função já retorna uma Promise. A palavra-chave async é útil se você quiser usar await dentro da função, tornando mais fácil trabalhar com outras promises. Como sua função retorna diretamente uma Promise, ela funciona bem sem async.

Você não precisa usar a palavra-chave async em JavaScript se sua função já retorna uma Promise.

static blabla(): Promise<number> {
  return new Promise<number>((resolve) => {
    resolve(999);
  });
}

Aqui está um exemplo de como você poderia utilizar programação assíncrona em uma função mais complexa:

static async example(): Promise<number> {
  const result = await someAsyncFunction(); // Using await for another promise
  return result + 999; // Now it makes sense to use async
}

Resposta #2

A palavra-chave "async" é usada para fazer uma função retornar uma "Promise" implicitamente e permitir o uso da palavra-chave "await" dentro da função. No seu caso, como a função já retorna uma "Promise" explicitamente e não utiliza o "await", usar "async" não é necessário.

SE você insistir e quiser adicionar "async", você poderia e deveria refatorar a função para ser: static async blabla(): Promise<number> { return 999; } A função agora retorna implicitamente "Promise" e a palavra-chave async deixa isso claro.

Ambas as versões são funcionalmente equivalentes.