回调函数的理解

那个方法是异步我就把回调函数加载那里。然后我拿到该函数的值传到我自己的方法里面。
这个例子说明了回调函数其实一种思想,由于异步,我想要接收到值,我只能等它操作完成以后再调用我的方法才能获取到前面的值。以前我们直接调用该函数获取它的返回值。这种方式行不通了。

export function lajifeiwu() {
    const color='red'
    // function say() {
    //     setTimeout(() => {
    //         const color = 'yellow'
    //     }, 1000);
    //     return color;

    // }
    // //hqys
    // function hqys() {
    //     var color = say();  //这样肯定获取不到我们要的那个值,因为什么是异步的,想要获取必须要在都执行完成以后再调用我们获取值的函数
    //     console.log(color);
    // }
    // hqys();

    // function say(callback) {
    //     setTimeout(() => {
    //         const color = 'yellow'
    //         callback(color)
    //     }, 1000);

    // }

    // function hqys(color) {
    //     // var color = say();  //这样肯定获取不到我们要的那个值,因为什么是异步的,想要获取必须要在都执行完成以后再调用我们获取值的函数
    //     console.log(color);
    // }

    // say(hqys);
    

    //用了回调函数以后接收值得方式可能就不是return了这个一定要注意,不定义只有return才可以传值
    // function say() {
    //     return new Promise(function (resolve) {
    //         setTimeout(() => { const color = 'yellow'; resolve(color) }, 1000);
    //     });
    // }
    // function hqys(color) {
    //         console.log(color);
    // }

    // say().then(hqys)


    function say() {
        return new Promise(function (resolve) {
            setTimeout(() => { const color = 'yellow'; resolve(color) }, 1000);
        });
    }
    async function hqys() {
        const color = await say();
        console.log(color);
    }

    hqys();


    
































    
    // console.log(say());
    //我两秒以后调用,而不是我调用了以后等两秒所以还是输出未定义
    // setTimeout(() => { console.log(say()); }, 2000); 
}
export function lajifeiwu() {
    const color='red'
    // function say() {
    //     setTimeout(() => {
    //         const color = 'yellow'
    //     }, 1000);
    //     return color;

    // }
    // //hqys
    // function hqys() {
    //     var color = say();  //这样肯定获取不到我们要的那个值,因为什么是异步的,想要获取必须要在都执行完成以后再调用我们获取值的函数
    //     console.log(color);
    // }
    // hqys();


    function say(callback) {
        setTimeout(() => {
            const color = 'yellow'
            callback(color)
        }, 1000);
        return color;

    }

    function hqys(color) {
        // var color = say();  //这样肯定获取不到我们要的那个值,因为什么是异步的,想要获取必须要在都执行完成以后再调用我们获取值的函数
        console.log(color);
    }

    say(hqys);






    
    // console.log(say());
    //我两秒以后调用,而不是我调用了以后等两秒所以还是输出未定义
    // setTimeout(() => { console.log(say()); }, 2000); 
}

大佬https://www.jb51.net/article/100661.htm
在这里插入图片描述初学js的时候,被回调函数搞得很晕,现在回过头来总结一下什么是回调函数。

我们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。

字面上的理解,回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调。

其实也很好理解对吧,回调,回调,就是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数。但是以前看过很多博客,他们总是将回调函数解释的云里雾里,很高深的样子。

举一个别人举过的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。” 对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。其实这就是一个回调的过程。你留了个参数函数(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是主函数。她必须先回到家以后,主函数执行完了,再执行传进去的函数,然后你就收到一条信息了。

现在基本理解回调函数的意思了吧。不理解的话没关系,我们用代码说话。

//定义主函数,回调函数作为参数
function A(callback) {
    callback();  
    console.log('我是主函数');      
}

//定义回调函数
function B(){
    setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作  
}

//调用主函数,将函数B传进去
A(B);

//输出结果
我是主函数
我是回调函数

上面的代码中,我们先定义了主函数和回调函数,然后再去调用主函数,将回调函数传进去。

定义主函数的时候,我们让代码先去执行callback()回调函数,但输出结果却是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,可以接着执行自己的代码。所以一般回调函数都用在耗时操作上面。比如ajax请求,比如处理文件等。
https://www.cnblogs.com/lishuxue/p/5999682.html

回调函数就是有两个函数,一个主函数,主函数里面调用的参数就是回调函数。

function callback() {
    alert("I am in the callback!");
}

function work(func) {
    alert("I am calling the callback!");
    func(); 
}

work(callback);


链接:https://www.zhihu.com/question/19801131/answer/91780287


My JSP 'MyJsp.jsp' starting page test

I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.
I love you,java.


https://www.runoob.com/jquery/jquery-callback.html
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值