回调函数

169 阅读1分钟

这是我参与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函数执行完之后才执行的,所以是不行的

不传回调 image.png 传回调 image.png

  • 比方说,我们要对两个数进行四则运算,我们应该怎么做呢?我们总不会在异步函数中写我们想要进行的步骤吧。
  • 理论上这样也可以,但是相对于回调函数来说,他还是太复杂了。我们开发讲究的一个原则就是简洁,代码容易理清思路和读懂

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.总结

  • 对知识的深度了解得不是很深,很多知识只停留在会用的层面上,在接下来的时间里,我会更加努力,使自己变得更加优秀。
  • 让学习成为自己的一种日常习惯。
  •   希望以上内容对你理解回调函数,异步编程有一丝丝的帮助谢谢!!! ,我们下篇文章再见,拜拜啦!