1 let numbers=[8,42,38,11,2,39,1]; 2 let sort=[]; 3 let sorted=[]; 4 5 numbers.forEach((num) => { 6 sort.push( 7 new Promise((resolve, reject) => { 8 setTimeout(function () { 9 sorted.push(num); 10 },num); 11 }) 12 ) 13 }) 14 Promise.all(sort).then(() => { 15 console.log(sorted); 16 })
let numbers=[8,42,38,11,2,39,1]; // 定义一个数字数组 let sort=[]; let sorted=[]; numbers.forEach((num) => { //遍历数组 sort.push( new Promise((resolve, reject) => { // 创建一个Promise,并加入到sort数组 setTimeout(function () { 在给定的时候后,将遍历的数字加入到sorted数组中 sorted.push(num); resolve(); // 在使用Promise的时候,要保证要有结束。这也是本段程序的bug。 },num); }) ) }) // 利用Promise的all功能,实现当所有数字都加入到 sorted数组之后,再打印出这个数组。 Promise.all(sort).then(() => { console.log(sorted); })
本人的理解:定义集合numbers,然后循环每个元素,在循环的过程中,往sort集合中放入Promise对象,Promise对象里面放入的是一个定时器,定时器每隔num时间后,往sorted集合中插入num;
后面的是循环把sorted打印在浏览器的console中