簡體   English   中英

為什么jQuery.animate是同步的?

[英]Why jQuery.animate is synchronous?

為什么此代碼同步工作?

$this.animate( { 'left': '+=200px' } );
$this.animate( { 'top' : '+=200px' } );

我真的懷疑是否可以在JavaScript中同步執行功能。

doSomething();
doSomethingMore();

function doSomething() {
    setTimeout(function() {
        alert('doSomething finished');
    }, 3000);
}

function doSomethingMore() {
    setTimeout(function() {
        alert('doSomethingMore finished');
    }, 1000);
}

在函數doSomething完成之前,如何不執行函數doSomethingMore。 或類似的東西。

謝謝。

我只是在這里猜測,因為我也無法遵循jQuery源代碼。 :)

.animate()將動畫添加到隊列中。 默認情況下是$.fx 當一個項目添加到隊列中時:如果是第一個,則運行它; 如果不是,它將一直等待直到它是隊列中的第一項。 jQuery完成動畫的運行后,它將從隊列中刪除第一個項目(即剛剛完成的動畫),然后運行第二個項目。
因此,它似乎只能同步運行。 如果在第二次調用.animate()之后放置另一個語句,您會看到它實際上是立即執行的。 這也是.animate()進行回調的原因。

還有其他功能可以讓您操縱隊列。 例如.stop().queue()

您兩次調用該方法,因此它將按當前工作方式進行操作,使其按您希望其工作的方式工作,您必須在一個調用中執行此操作:

$this.animate({left: '+=200px',top : '+=200px'});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM