1. setTimeout的一些知识点
setTimeout这个函数我们知道他是异步的,会在我们所指定的延迟时间之后才会执行,举例
console.log("1"); function examPle (){ setTimeout(function(){ console.log("2"); },2000) console.log("3"); } examPle(); console.log("4");
上边的代码先执行 console.log("1"),
然后进入examPle()函数,执行console.log("3"),
然后执行console.log("4"),
最后在2000ms后将 setTimeout()中的函数添加到任务队列中去,执行 console.log("2")。
2.自己对回调函数的认识和回调函数的基本用法
function callBack(callback){ // let callback = function(data){ console.log(data);} setTimeout(function(){ let value1 = 2020,value2 = 2021; callback(value1,value2); },2000) } callBack(function(data){ console.log(data); })
我对回调函数的一个认识,刚开始学的时候感觉有点迷,想不出来这个到底有什么用处
感觉这样写是多此一举,毫无意义。在学习一段时间,我貌似有点顿悟了(哈哈哈)。
首先我觉得吧,回调函数在异步中是很重要的,(如果想要获取异步操作的结果,就要用到回调函数)
比如上边这个例子 callBack中 setTimeout中的这个函数中的变量的值,我们就要用到回调函数,你在callBack函数中是无法获得这个异步操作里边的值
这个异步函数是在callBack函数执行完之后才执行的,所以是不行的。
比方说,我们要对两个数进行四则运算,我们应该怎么做呢?我们总不会在异步函数中写我们想要进行的步骤吧,
理论上这样也可以,但是相对于回调函数来说,他还是太复杂了。我们开发讲究的一个原则就是简洁,代码容易理清思路和读懂
下面上四则运算的代码:
(1)加法运算
callBack(function(data01,data02){ let res = data01 + data02; console.log(res); })
(2)减法运算
callBack(function(data01,data02){ let res = data01 - data02; console.log(res); })
(3)乘法运算
callBack(function(data01,data02){ let res = data01 * data02; console.log(res); })
(4)除法运算
callBack(function(data01,data02){ let res = data01 / data02; console.log(res); })
按顺序结果如下:
3.回调函数的问题
1.由于嵌套了太多的回调函数,就会出现一个问题——回调地狱问题
2.并行执行两个异步操作,当两个结果都结束时通知你
3.同时进行两个异步操作的结果,只取优先完成的结果
在以上这些情况下,你需要跟踪多个回调函数并理清这些操作,
promise就很好的解决这些情况(后续归纳关于promise的一些知识点)。
4.总结
对知识的深度了解得不是很深,很多知识只停留在会用的层面上,在接下来的时间里,我会更加努力,使自己变得更加优秀,
让学习成为自己的一种日常习惯。
希望以上内容对你理解回调函数,异步编程有一丝丝的帮助,谢谢!!!