promise函数封装

异步函数

let index = 0;
    function delay(time,fn){      
          return new Promise((resolve,reject)=>{
             setTimeout(()=>{
                fn();
                resolve(`执行的第${++index}次`);
             },time);
          });
        }

返回一个promise对象

promise的回调函数 中resolve()的参数:
1 没有使用then时, 参数是整个promise的返回值,需要定义变量来接收,再使用
2 使用then时, 参数是then中处理执行成功方法的实参,需要定义形参接收,再使用

async function ff(){
    let val1 = await delay(1000,function(){
            console.log(1);
        });
        console.log(val1);
    let val2 = await delay(1000,function(){
            console.log(2);
        });
     console.log(val2);
    let  val3 = await delay(1000,function(){
            console.log(3);
        });
        console.log(val3);
    }  
    ff();

for-of循环

let arr = [“a”,“b”,“c”,“d”,“e”];
let obj = {
a : 1,
b : 2,
c : 3
}

for…in 通过 key-value的形式来遍历数据

// for(let val in arr){
// console.log(val);
// console.log(arr[val]);
// }

// for(let val in obj){
// console.log(val);
// };

for…of 直接读取数据

for(let val of arr){
console.log(val);
// console.log(arr[val]);
}
console.log(arr);
console.log(obj);
for(let val of obj){
console.log(val);
}

迭代协议

let obj = {
            a : 1,
            b: 2,
            c: 3
        }

 // console.log(Object.keys(obj));
 obj[Symbol.iterator] = function(){

 // 迭代协议
            let values = Object.values(obj);
            let index = 0;
            
   return {
                **next(){ // 这里不是自定义的名称**

          if(index >= values.length){
                     return {
                    // value: "1",  // 循环过程中的值
                     done: true // 代表循环是否完成
                    }
                }else{
                     return{
                          done :false,
                          value: values[index++]
                     }
                }                
              }
            }  
        }
 let va =  obj[Symbol.iterator]();
 console.log(va.next());
         console.log(va.next());
         console.log(va.next());
         console.log(va.next());
         console.log(va.next());

        for(let val of obj){
            console.log(val);
        }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值