回调函数,setTimeout,Promise
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回调函数,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.
以上是关于回调函数,setTimeout,Promise的主要内容,如果未能解决你的问题,请参考以下文章