首页 新闻 搜索 专区 学院

求大神详细解读一下这段代码.,能多底层就多底层..拜谢..

0
悬赏园豆:20 [已解决问题] 解决于 2017-05-03 22:43
 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     })

 

流年之外天空蓝的主页 流年之外天空蓝 | 初学一级 | 园豆:99
提问于:2017-04-24 23:23
< >
分享
最佳答案
1
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);
})
收获园豆:10
幻天芒 | 高人七级 |园豆:36594 | 2017-04-25 09:43
其他回答(1)
0

本人的理解:定义集合numbers,然后循环每个元素,在循环的过程中,往sort集合中放入Promise对象,Promise对象里面放入的是一个定时器,定时器每隔num时间后,往sorted集合中插入num; 

后面的是循环把sorted打印在浏览器的console中

收获园豆:10
奈何一笑 | 园豆:439 (菜鸟二级) | 2017-04-25 09:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册