JavaScript の非同期の性質により、戻り値をすぐに取得する際に課題が生じることがよくあります。このコンテキストでは、非同期呼び出しを通じて GUID 値を取得する jQuery 関数について考えてみましょう。関数内のalert()関数はGUIDを正常に表示しますが、それを変数に割り当ててその値を返すことは、多くの開発者にとってわかりにくいことがわかっています。
この問題に対する一般的なアプローチの1つは、コールバック関数をパラメータ。このメソッドにより、関数は非同期呼び出しの完了時に遅延された Promise を返し、コールバックをアタッチできるようになります。
function trackPage() { var elqTracker = new jQuery.elq(459), dfd = $.Deferred(); elqTracker.pageTrack({ success: function() { elqTracker.getGUID(function(guid) { dfd.resolve(guid); }); } }); return dfd.promise(); } // Example usage: trackPage().done(function(guid) { alert("Got GUID: " + guid); });
この例では、trackPage() 関数が Promise を返すようになりました。非同期呼び出しが完了すると、done() メソッドを使用してコールバック関数をアタッチして GUID 値を受け取ることができます。複数のコールバックを連鎖させることができます。
var pageHit = trackPage().done(function(guid) { alert("Page Hit GUID: " + guid); }); $("button").click(function() { pageHit.done(function(guid) { alert("Clicked on Page GUID: " + guid); }); });
jQuery が提供する $.Deferred オブジェクトを使用すると、開発者は Promise を返す独自の非同期ロジックを作成でき、アプリケーション全体で一貫したインターフェイスを確保できます。 AJAX などの他の jQuery モジュールも Promise を返すため、JavaScript での非同期操作の処理が容易になります。
以上がjQuery を使用して JavaScript 非同期関数から戻り値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。