Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   jquery асинхронность (https://javascript.ru/forum/misc/82776-jquery-asinkhronnost.html)

od0201 02.07.2021 18:58

jquery асинхронность
 
как ждать "finish" работая с jquery
<html>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
<p>start</p>
<script 
src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
$("div").each((i,e)=>setTimeout(() => $(e).css('background','red' ), (i+2)*500))
$('p').text('finish')
</script>
</body>
</html>


сливать в массив и работать с ним через for of, или есть другой вариант?

рони 02.07.2021 19:25

od0201,
<html>
<body>
<div>1</div>
<div>2</div>
<div>3</div>
<p>start</p>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
let map = $("div").map((i,e)=> {
let d = $.Deferred();
setTimeout(() => {$(e).css('background','red' ), d.resolve();} ,  (i+2)*500)
return d
})
$.when(...map).done(() => $('p').text('finish') )
</script>
</body>
</html>


Часовой пояс GMT +3, время: 10:44.