• 回调函数,setTimeout,Promise


    回调函数

    在函数里调用传进来的函数(参数),该函数叫回调函数。

    好处

    • 让封装的函数更灵活
    • 异步

    forEach使用的回调函数

    let ary = [];
    ary.forEach(function(){
    
    });
    
    
    
    let ary=[2,3,4,5,6,7,8]
    let sort=function(ary,func){
        for(let i=0;i<ary.length;i++){
            for(let j=0;j<ary.length-i-1;j++){
                if(func(ary[j],ary[j+1])>0){
                    let temp=ary[j];
                    ary[j]=ary[j+1];
                    ary[j+1]=temp;
                }
            }
        }
    }
    sort(ary,function(a,b)){
        return b-a;
    })
    console.log(ary);

    扩展

    异步

    同步:一个做完另一个才能做

    异步:同时做(如:用户同时访问一个页面),对性能要求高

    异步方法:

    setTimeout(回调,时间)

    括号内时间:参数,以毫秒 ms 为单位;指定的时间后,回调

    let  cook = function(){
        console.log('开始做饭');
        setTimeout(function){
            console.log('饭已经做好');
    
        },3000);      
    }             // 开始做饭 (3s后输出)  饭已经做好
    let  cook = function(){
        console.log('开始做饭');
        setTimeout(function){
            console.log('饭已经做好');
            wash();
        },3000);      
    }            
    let  cook = function(){
        console.log('开始洗衣服');
        setTimeout(function){
            console.log('衣服已经洗好');
            clean();
        },3000);      
    }             // 饭已经做好 (3s后输出)  开始洗衣服

    Promise

    跟回调一起用      es6

    开始: * 成功(resole)-状态, 不会改变 * 失败(reject)

    状态的改变通过then 想要在哪儿调用什么就在哪儿调用 then

    let promise = new Promise(function(resolve,reject)){
        setTimeout(function(){
            condole.log('开始');
            resolve();
        },5000)
    });       // 5秒后输出开始

    Generate

    生成器也是函数,可以在执行的中间暂停。

    关键字:yield ;

    星号 * generate.next

    let dowork = function*(){
        yield condole.log('做饭');
        yield condole.log('洗衣服');
        yield condole.log('扫地');
        yield condole.log('玩游戏');
        yield '干完了所有事情';
    }
    let generate = dowork();
    condole.log('go 作业');
    generate.next();
    condole.log('go 家');
    generate.next();
    condole.log('go 学习');
    condole.log(generate.next());
    condole.log('八卦');
    generate.next();
    
    let obj=generate.next();
    condole.log(obj.value); // {value:'干完了所有事情',done:false} done:没有yield; false:没有结束
    condole.log(obj.value); // 干完了所有事情
    
    condole.log(generate.next()); // {value:undefined,done:true}

    异步:同时做一些事;效率高,但是对性能要求高。做异步方法:setTimeot;多线程;Promise;Generate.

  • 相关阅读:
    Stochastic Gradient Descent 随机梯度下降法-R实现
    Gradient Descent 梯度下降法-R实现
    【转】Linux内核中分配4M以上大内存的方法
    【转】在Linux下写一个简单的驱动程序
    【转】内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages
    【转】uboot中的mmc命令
    【原】cmdline传递参数 uboot-->kernel-->fs
    【转】UBOOT——启动内核
    【转】Linux下的磁盘分区方法
    【转】linux下 如何切换到root用户
  • 原文地址:https://www.cnblogs.com/llying/p/7702142.html
Copyright © 2020-2023  润新知