Самый простой способ - использовать парадигму async
/ await
.
Создать функцию, которая реализует задержку (возвращая обещание, которое разрешается после тайм-аута):
const delay = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms));
Затем преобразуйте вашу функцию в async
функцию:
bubbleSort = async (arr) => {
Наконец, вставьте вызов задержки в ваш l oop:
await delay(400);
РЕДАКТИРОВАТЬ: По комментариям, использование setTimeout
означает, что функция не может вернуть результат напрямую, так как результат не будет доступен в момент выхода из функции. Если вам нужно только визуализировать сортировку, выше будет достаточно. Если вы действительно хотите отсортированный массив, вам нужно будет дождаться выполнения функции bubbleSort
(или связать обещание, которое она возвращает):
// needs to be inside `async` function
let sortedArray = await bubbleSort(array);
или
// the result needs to be used in callback
bubbleSort(array).then(sortedArray => ... );