2017-10-08 84 views
3

考慮下面的代碼片段。顯示的開始和結束時間有什麼區別?爲什麼.promise().done()沒有響應?爲什麼以及應該如何使用promise()方法?

function getMinsSecs() { 
 
    var dt = new Date(); 
 
    return dt.getMinutes() + ":" + dt.getSeconds(); 
 
} 
 

 
$("#start").on("click", function() { 
 
    $("p").append("Start time: " + getMinsSecs() + "<br />"); 
 
    
 
    $("div").each(function(i) { 
 
    $(this).fadeOut(1000 * (i * 2)); 
 
    }); 
 
    
 
    $("div").promise().done(function() { 
 
    $("p").append("End time: " + getMinsSecs() + "<br />"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<div><p></p></div> 
 
<div><p></p></div> 
 
<div><p></p></div> 
 
<div><p></p></div> 
 
<div><p></p></div> 
 
<button id="start">Start time</button>

回答

2

會有怎樣的開始和結束時間之間的區別顯示?

的時間差將是它需要完成

的長度上div元素所有排隊的動畫爲什麼.promise()()完成沒有反應?

它是。在您的示例中您看不到結果,因爲當​​完成時p標籤全部隱藏,因此您看不到輸出的「結束時間」。如果你使用一個不同的元素來顯示時間,它工作正常:

function getMinsSecs() { 
 
    var dt = new Date(); 
 
    return dt.getMinutes() + ":" + dt.getSeconds(); 
 
} 
 

 
$("#start").on("click", function() { 
 
    $("p").append("Start time: " + getMinsSecs() + "<br />"); 
 
    $("div").each(function(i) { 
 
    $(this).fadeOut(1000 * (i * 2)); 
 
    }); 
 
    $("div").promise().done(function() { 
 
    $("span").append("End time: " + getMinsSecs() + "<br />"); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<div><p></p></div> 
 
<div><p></p></div> 
 
<div><p></p></div> 
 
<div><p></p></div> 
 
<div><p></p></div> 
 
<button id="start">Start time</button> 
 

 
<span></span>

相關問題