関数ブロック内の他の関数自体が非同期関数であるのに、関数を非同期として宣言するのはなぜですか [重複]

概要

const fs = require('fs').promises

const filePath = './me.txt';
async function  readFileAsync(){
 try{
    const data=  await fs.readFile(filePath,'utf-8')
    console.log(data)
 }
 catch(err){
    console.log(err)
 }

}
readFileAsync()

上記のコードを例に挙げると、fs.readFile() は async 関数であり、Promise を返し、await は Promise の解決された値を返すことがわかっています。では、なぜ async キーワードを使用して readFileAsync を宣言する必要があるのでしょうか?

解決策

関数の async キーワードにより、関数実行内で await キーワードを使用できるようになります。これにより、readFile 関数の Promise が解決されるまで関数の残りの実行が停止され、同じ理由で readFileAsync 関数が非同期になります。