今日、私は非同期操作を扱うこれら 2 つの方法の違いについて自分自身が無知であることに直面したので、自分への備忘録として、この記事を書くために本を読んで調べてみることにしました。そして、他の開発者がこの違いをよりよく理解できるようになるかもしれません。
当時、私はどちらも同じことを行い、then() は解決されたデータを取得し、resolve と拒否は成功またはエラーで終了するために使用されることを説明する方法を多かれ少なかれ知っていました。 Async/await では、次のステップに進む前に結果を待つ必要がありました。それは完全に間違っていたわけではありませんが、もっと良い方法で説明できるはずです。
Promise は、その名前が示すように、次の 3 つの主要な状態を経由するデータ戻りの「約束」です。
const minhaPromise = new Promise((resolve, reject) => { let sucesso = true; // Apenas um exemplo condicional if (sucesso) { resolve("Operação concluída com sucesso!"); } else { reject("Ocorreu um erro na operação."); } });
これは、async/await の前に Promise を処理する最も一般的な方法でした。 then()、catch()、finally() メソッドを使用します。
minhaPromise .then((mensagem) => { console.log(mensagem); // "Operação concluída com sucesso!" }) .catch((erro) => { console.error(erro); // Se der erro, isso será executado. }) .finally(() => { console.log("Finalizando a execução da Promise"); // Sempre será executado. });
async とマークされた関数は自動的に Promise を返し、await は Promise が解決されるまで実行を「一時停止」するために使用されます。
async function buscarDados() { try { const response = await fetch("https://jsonplaceholder.typicode.com/todos/1"); const data = await response.json(); console.log("Dados recebidos:", data); } catch (error) { console.error("Erro ao buscar dados:", error); } } buscarDados();
Promise の連鎖により、特に複数の then() を連続して使用する場合、コードが非常にネストされる可能性があり、読み取りがより困難になります。
Async/await を使用すると、同期コードに似た方法で非同期コードを作成できるため、ロジックが読みやすく理解しやすくなります。特に複数の非同期操作を処理する必要がある場合、コードがよりクリーンになります。
さらに、async/await で try/catch を使用してエラーを処理する方法は、単に Promises で catch を使用するよりも直感的です。
以上がPromise Chaining と Aync/await の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。