异步代码

    在 执行完3秒后 do stuff 会输出到控制台。我们可以看出当指定的时间过去后我们所提供的异步函数会触发。现在来看个更有启发性的示例:

    1. doWork( () => {
    2. console.log('call me when done');
    3. })
    1. function doWork(cb){
    2. setTimeout( () => {
    3. cb();
    4. }

    另外一个回调函数代码的例子就是事件,这里使用了 jQuery 事件的写法。

    回调函数和异步的要点通常来说就是一个或多个函数在未来某个时间点会被调用,而这个时间点是未知的。

    简而言之就是 可读性

    想象一下执行下面的代码

    1. syncCode() // 输出 1
    2. syncCode2() // 输出 2
    3. asyncCode() // 输出 3
    4. syncCode4() // 输出 4

    输出

    1. 1,2,4,3

    我们可能需要调整一下回调函数的顺序,像这样:

    目前来说还是可读的,但稍微想象一下,我们的异步代码可能会变成这样:

    1. asyncCode3() => {
    2. }
    3. })
    4. })

    这就是大家熟知的回调地狱(callback hell),就此打住吧 :)

    1. getData()

    对于请求/响应模式,promise 已经足够好了,但对于更高级的异步场景,我敢说只有 RxJS 方能胜任。