非同期関数を使用する場合、ある関数が別の関数に進む前に確実に完了することが重要です。 JavaScript では、この同期を実現する方法がいくつかあります。
言及されているアプローチの 1 つは、グローバル ブール変数を使用して関数の完全性を示すことです。このメソッドは機能しますが、複数の非同期操作が存在する場合、競合が発生する可能性があります。
より洗練された解決策にはコールバックが含まれ、非同期操作の終了後に呼び出し元が実行する関数を指定できるようになります。コールバック関数は、このシナリオを処理する明確かつ簡潔な方法を提供します。
function firstFunction(_callback) {
// Perform asynchronous work here...
_callback();
}
function secondFunction() {
firstFunction(() => {
console.log('First function completed');
});
}
コードを簡潔にするには、アロー関数の使用を検討してください:
firstFunction(() => console.log('First function completed'));
あるいは、非同期操作をより詳細に制御する必要がある場合は、Promises または async/await の使用を検討してください。 Promise はより構造化されたアプローチを提供し、操作を連鎖させて複数の非同期呼び出しを効率的に処理できるようにします。
const firstFunctionPromise = () => {
// Return a Promise object...
};
secondFunction()
.then(result => {
console.log('First function completed using Promise');
})
.catch(error => {
console.log('Error occurred: ' error);
});
読みやすさを向上させ、コードを簡潔にするために、async/await はより単純な構文を提供します。
const secondFunction = async () => {
const result = await firstFunction();
console.log('First function completed using async/await');
};
最終的に、最適なアプローチは、特定のユースケースの複雑さと要件によって異なります。適切な同期方法を選択することで、非同期関数のスムーズかつ予測可能な実行を保証できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3