02 回调

作者: 将军肚 | 来源:发表于2018-07-13 21:01 被阅读0次

2.1 continuation

// A
ajax('..', function(..){
    //C
})
//B

A 和 B 表示重新的前半部分,而 C 标识了后并部分。前半部分立即执行,然后是等待。在未来某个时刻,如果Ajax调用完成,重新就会从停下的位置继续执行后半部分。

我们的顺序阻塞式的大脑计划行为无法很好地映射到面向回调的异步代码。这就是回调方式最主要的缺陷:对于它们在代码中表达异步的方式,我们的大脑需要努力才能同步得上。

2.3 信任问题

顺序的人脑计划和回调轻动的异步JS代码之间的不匹配只是回调问题的一部分。还有一些更深入的问题需要考虑。

//A
ajax('...', function(){
    //C
})
//B

A 和 B 发生于现在,在JS主程序的直接控制之下。C 会延迟到将来发生,并且是在第三方的控制下(ajax)。有时ajax回调不是你编写的代码,也不在你的直接控制下。
我们把这称为控制反转(inversion of control)。

确保调用一次

var tracked = false;
analytics.trackPurchase(purchaseData, function(){
    if(!tracked){
        tracked = true;
        chargeCreditCard();
        displayThankyouPage();
    }
})

相关文章

  • 02 回调

    2.1 continuation A 和 B 表示重新的前半部分,而 C 标识了后并部分。前半部分立即执行,然后是...

  • 01node.js

    01、模块 02、关注学习 03、Node.js 回调函数Node.js 异步编程的直接体现就是回调。异步编程依托...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数。 回调地狱 回调套回调套回调套回调套回调套回调套回调....

  • 回调、同步回调、异步回调

    异步消息的传递-回调机制 原文地址:https://www.ibm.com/developerworks/cn/l...

  • 前端入门11 -- JavaScript之Promise

    回调函数 回调函数分为两种类型,分别为同步回调与异步回调; 同步回调:会立即执行,完全执行完了才结束,不会放入回调...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • 回调函数与promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数 具名回调写法 匿名回调写法 多层嵌套的匿名回调(回调地...

  • Kotlin使用接口回调

    1.Java中的接口回调实现(支持多方法回调) 声明回调接口,初始化接口 使用接口回调(无参数) 使用接口回调(带...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数一个最基本的具名回调匿名回调 回调地狱匿名回调嵌套过多层...

  • [swift]回调block回调

    在OC中习惯应用block进行事件回调,到swift中依然想找到这种简洁的回调事件,下面将介绍如何在swift中使...

网友评论

      本文标题:02 回调

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