这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战
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){
setTimeout(function(){
let callback = function(data){ console.log(data);}**
let value1 = 2021;
callback(value1);
},2000)
}
callBack(function(data){
console.log(data);
})
- 我对回调函数的一个认识,刚开始学的时候感觉有点迷,想不出来这个到底有什么用处?
- 感觉这样写是
多此一举,毫无意义。在学习一段时间,我貌似有点顿悟了(哈哈哈)。 - 首先我觉得吧,回调函数在异步中是很重要的,(如果
想要获取异步操作的结果,就要用到回调函数) - 比如上边这个例子 callBack中 setTimeout中的这个函数中的变量的值,我们就要用到回调函数,你在callBack函数中是无法获得这个异步操作里边的值
- 这个异步函数是在callBack函数
执行完之后才执行的,所以是不行的。
不传回调
传回调
- 比方说,我们要对两个数进行四则运算,我们应该怎么做呢?我们总不会在异步函数中写我们想要进行的步骤吧。
- 理论上这样也可以,但是相对于回调函数来说,他还是太复杂了。我们开发讲究的一个原则就是
简洁,代码容易理清思路和读懂。
2.1下面上四则运算的代码
(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.总结
- 对知识的深度了解得不是很深,很多知识
只停留在会用的层面上,在接下来的时间里,我会更加努力,使自己变得更加优秀。 - 让学习成为自己的一种日常习惯。
- 希望以上内容对你
理解回调函数,异步编程有一丝丝的帮助,谢谢!!! ,我们下篇文章再见,拜拜啦!