使用jQuery 在JavaScript 中非同步擷取與指派GUID 值時,開發人員常遇到下列問題其中警報成功顯示該值,但在嘗試返回並將其指派給變數時該值仍然未定義。
這是由於非同步呼叫的性質而發生的。當呼叫 elqTracker.pageTrack() 函數時,它會立即返回,甚至在 getGUID() 函數完成執行之前也是如此。這會導致 returnValue 被設定為未定義。 為了解決此限制,jQuery 提供了 $.Deferred 物件。透過從 trackPage() 傳回一個 Promise,我們可以附加回調來處理非同步結果。透過將回調附加到trackPage() 返回的Promise,我們現在可以在以下情況下存取GUID 值:
<code class="javascript">function trackPage() { var elqTracker = new jQuery.elq(459), dfd = $.Deferred(); elqTracker.pageTrack({ success: function () { elqTracker.getGUID(function (guid) { dfd.resolve(guid); }); } }); return dfd.promise(); }</code>
此外,Promise 允許連結多個回調,提供靈活的方式來處理非同步操作。
<code class="javascript">trackPage().done(function (guid) { alert("Got GUID:" + guid); });</code>
這種方法確保返回值得到處理非同步,允許在後續操作中進行正確的分配和存取。
以上是如何使用 jQuery 處理 JavaScript 中的非同步回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!