私はいつもこれに利益があるかどうか疑問に思いました。以下に例を示します。約束に包まれ非同期関数が約束と同期の関数にラップされている
非同期機能:
(async() => {
await new Promise((resolve, reject) => {
fs.writeFile(filePath, dataToWrite, (error) => {
if (error) {
reject(error);
return;
}
resolve();
});
});
})();
同期機能:
(() => {
fs.writeFileSync(filePath, dataToWrite);
})();
私は軽い読み物から知っている唯一のことは、同期関数呼び出しブロックプロセスが完了するまで、ということです。したがって、たとえば、APIエンドポイントを持つWebサーバーは、同期機能が完了するまでこれらの要求を処理できません。これは、約束事に包まれた非同期関数にも当てはまりますか?両者の間に相違がある場合には、それを説明することができますか?
async関数自体が、非ブロックの約束を返します。 – mehulmpt
あなたのサンプル内に何かを待っているコードがないことを考えれば、まったく違いはありません。また、なぜIIFEでそれを包むのですか? – Bergi
私が間違っていない場合は、writeFileSyncがブロックされており、ディスク/ファイルシステムにファイルを書き込むのが完了するまで待つ必要があります。 – Veve