НажмитездесьПосмотреть эту статью Исходный код。
Код выглядит очень просто, поэтому он приведен прямо здесь:
function sleepSort(nums) {
const result = []
return new Promise(resolve => {
for (const num of nums) {
setTimeout(() => {
result.push(num)
if (result.length === nums.length) {
resolve(result)
}
}, num * 100)
}
})
}
sleepSort([4, 1, 3, 2, 9]).then(console.log)
// [ 1, 2, 3, 4, 9 ]
То есть какой текущий номер?,Насколько*100Добавлено через миллисекундыresult
множество。Но вы также можете немного попрактиковаться на этом примере.Promise
Использование。
Причина умножения на 100 здесь состоит в том, чтобы не допустить вытеснения разницы в несколько миллисекунд.
в то же время,ВоспользуйтесьPromise
,Мы можем написать это в асинхронной функции:
(async () => {
const data = await sleepSort([4, 5, 3, 6, 8])
console.log(data)
// [ 3, 4, 5, 6, 8 ]
})()
Это действительно очень практично и эффективно (нравится).