Js (Javascript) 回调的简单理解

来源:互联网 发布:网络教学的哪些专业好 编辑:程序博客网 时间:2024/05/21 10:08

当时学Java的时候不理解什么叫回调,看了好长一段时间,也没找到什么相对简单的讲解。

  1. Java 内因为不能使用委托(方法当成参数传递),所以只能借助Interface(接口)来实现。在需要回调的地方给一个接口参数,用到的时候,传接口实例即可(扯远了)。
  2. Javascript因为可以使用委托,那么简单很多,我就不说得很复杂。回调说白了,就是:我需要返回东西给你,但是我也不知道什么时候返回给你(异步)
//退款let Refund = {};//退款Refund.done = function (callback) {    let postData = {        //TODO        // orderid: '',        // openid: '',    };    Fetch.postObjData(API_URL.mobile.refundUrl, postData).then((data) => {        console.log(data);        //TODO 需要判断是否成功        if (typeof callback === "function") {            callback();        }    });};

这边方法done需要传一个参数过来,这个参数是function类型的,然后我就进行了网络请求(异步),等我网络请求结束,我就调用这个方法callback();,然后你调用我这个方法的地方,callback也就被调用了。谁调用的?我这边(Fetch里面)调用的。

function callback() {    console.log('被调用成功');}Refund.done(callback);

这边还需要考虑一个问题:就是回调的作用域问题。

流程是:

  1. 我调用你->Refund.done给了你一个方法类型的参数callback(名字随便取)
  2. 你开始执行,你执行到Fetch里面,Fetch执行完毕,你需要返回给我东西,怎么返回,通过我刚刚给你的callback,你执行了callback,那么就相当与我这边的callback被执行,因为他俩就是一个方法对象。
0 0
原创粉丝点击