JS入门(回调函数)

js 是同步的语言;执行顺序是冲上往下的

        回调函数是异步的。

        代码的执行顺序分为:同步 异步

        同步 弊端:会发生执行阻塞

        异步不会发生阻塞,

        异步:未来某一时刻需要执行的代码,优先执行,同步是按照代码的编写顺序从上往下执行,异步不会等待其他代码执行,所有的代码,谁快谁先执行

        js中异步

        回调函数(ES5)  promise对象(ES6)  async await (ES7)

        回调函数:

        优点:异步处理程序

        缺点:容易形成毁掉地狱,代码让人看不懂

        promise对象解决【回调地狱】问题  弊端:.then .then 链式结构很恶心

        推荐: async await  【同步写法异步程序,离不开promise  因为await会后必须是promise对象】



      回调函数:一个定义的函数,作为另一个函数的实参传入到另一个函数中

        回调函数执行:

         自动执行: 针对一些内置的API 自动触发 例如  sort

         手动执行: 自定义的函数传入的回调函数需要我们自己 写 xxx() 触发

      

         回调函数学习注意事项

         1:将来看到代码,【形参名字()】 ----> 该形参接受实参为【函数】---回调函数

         2:注意形参的名字与实参的名字不是一个, 相当于将 实参【函数名】重新赋值给【形参callback】--->形参callback 的值为定义的函数,【等待执行】

         3:第一步首先要知道 形参接受的是【哪个函数】--->才能知道执行了哪个回调函数

          ------> 方式一:通过找到实参,找到形参接受的函数

         ------> 方式二:通过方法体打印形参,知道接受的是哪个函数;--->知道触发是哪个函数

         4:回调函数在执行时候,也可以传入实参,按照上面的顺序,找实参找函数/变量,看至执行

         5:不要纠结执行顺序问题,只要会找传入的函数就可以了。

   

         异步学习方法

         1: 异步是什么时候开始的?

        2: 异步执行完毕时候;是如何告诉外界的

        3:外界接收到信号后,做什么

     


1:当函数作为实参传入时---》决定了【异步程序】

2:异步执行完毕时候;是如何告诉外界的

3:当回调函数方法体代码执行完毕或者有【返回值】时---》异步执行完毕

4:外界只要接受到【返回结果】 或者执行完毕效果---》【外界已经知道异步执行完毕】

5:异步执行完毕后,外界开始处理其他业务




        init(fn, a, c, call)

        function fn(callback) {

            // 执行回调函数  形参名字()

            callback()  //在这里 call作为

            // call() //区别:在执行fn 函数,调用外部函数call

            console.log("我是一个函数")

        }

        function call(callback) {

            console.log("我是一个回调函数")

        }

        function a(callback) {

            console.log('111111')

        }

        var c = function (callback) {

            console.log('222222')

        }

        function init(callback1, callback2, callback3, callback4) {

            console.log("初始化")

            callback1(a)

            callback2()

            callback3()

            callback4()

            console.log(callback4)

        }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。