美文网首页技术挖掘机-soser
全面解析js的回调函数

全面解析js的回调函数

作者: fullbook | 来源:发表于2016-09-18 11:47 被阅读422次

    回调函数原理:“我先睡会,醒了给你打电话”。这是一个异步的流程,“我睡觉”这个过程中(函数执行),“你”可以去做任何事,“睡醒了”(函数执行完毕)“打电话给你”(回调)进行之后的流程。

    1、基本方法

    <pre>function doSomething(cb) {
    cb('param1', 'param2', 'param3');
    }
    function callback(a, b, c) {
    console.log(a + ' ' + b + ' ' + c);
    }
    doSomething(callback);</pre>

    2、匿名函数

    <pre>function doSomethind(option, cb) {
    console.log(option);
    if(typeof cb == 'function') cb();
    }
    doSomethind('回调函数', function() {
    console.log('result');
    });</pre>

    3、使用javascript的call方法

    (1)基本用法
    <pre>function person(name) {
    this.name = name;
    }
    person.prototype.doSomething = function(cb) {
    cb.call(this);
    }
    function callback() {
    console.log(this.name);
    }
    var p = new person('Jack');
    p.doSomething(callback);</pre>

    (2)传入参数
    <pre>function person(name) {
    this.name = name;
    }
    person.prototype.doSomething = function(cb, params) {
    cb.call(this, params);
    }
    function callback(params) {
    console.log(params + ' ' + this.name);
    }
    var p = new person('Jack');
    p.doSomething(callback, 'Hi');</pre>

    4、使用 javascript 的 apply 传参数

    <pre>function person(name) {
    this.name = name;
    }
    person.prototype.doSomething = function(cb) {
    cb.apply(this, [1, 2, 3, 'Hi']);
    }
    function callback(one, two, three, hi) {
    console.log(one + ' ' + two + ' ' + three + ' ' + hi + ' ' + this.name);
    }
    var p = new person('Jack');
    p.doSomething(callback);</pre>

    相关文章

      网友评论

        本文标题:全面解析js的回调函数

        本文链接:https://www.haomeiwen.com/subject/jmnwettx.html