美文网首页
异步与回调

异步与回调

作者: astak3 | 来源:发表于2018-10-27 23:15 被阅读0次

异步

我对异步的理解:

  1. 异步是不等结果,往下执行;同步是等结果出现后,再往下执行
  2. 代码中出现异步程序时,如例2中,执行顺序就会发生变化
  3. 使用回调,就是让执行顺序不会发生变化

但这肯定不是异步要表达的意思,因为下面的例子是完全是异步的负面效果,那异步到底有啥作用?

下面的例子是解决异步带来的问题,而非异步的优点。

例子:

1、下面的程序f1()f2(),...,f5(),它会按照顺序从上往下的顺序执行,就是同步。

f1 =function(){console.log(1)}
f2 =function(){console.log(2)}
f3 =function(){console.log(3)}
f4 =function(){console.log(4)}
f5 =function(){console.log(5)}

f1()
f2()
f3()
f4()
f5()

2、假如f1()是个异步函数,它的执行顺序就会发生变化f2(),...,f5()f1()

f1 =function(){
    setTimeout(function(){
        console.log(1)
    },10)
}
f2 =function(){console.log(2)}
f3 =function(){console.log(3)}
f4 =function(){console.log(4)}
f5 =function(){console.log(5)}

f1()
f2()
f3()
f4()
f5()

3、这不是我们想要的结果,我们想要的结果是f1()f2()依次运行,就需要使用回调函数,定义是将函数A作为参数,传入函数B

f1 =function(fn){
    setTimeout(function(){
        console.log(1)
        fn.call()
    },10)
}
f2 =function(fn){console.log(2);fn.call()}
f3 =function(fn){console.log(3);fn.call()}
f4 =function(fn){console.log(4);fn.call()}
f5 =function(fn){console.log(5);fn.call()}

f1(()=>{
    f2(()=>{
        f3(()=>{
            f4(()=>{
                f5()
            })
        })
    })
})

4、或者使用Promise,更能体现执行的顺序

f1 =function(){
    return new Promise(function(resolve){
        setTimeout(function(){
            console.log(1)
            resolve.call()
    },10)
    })
}
f2 =function(){console.log(2)}
f3 =function(){console.log(3)}
f4 =function(){console.log(4)}
f5 =function(){console.log(5)}

f1().then(f2).then(f3).then(f4).then(f5)

回调

把函数 A 作为参数传入函数 B 中

function async(f1, f2) {
    setTimeout(function() {
        f1.call();
        f2.call();
    }, 0);
}
function foo(){
    console.log('foo');
}
function bar(){
    console.log('bar');
}

console.log('异步开始');
async(foo, bar)
console.log('异步结束');

//打印结果:
//异步开始
//异步结束
//foo
//bar

相关文章

  • nodejs--day4笔记

    1. 同步与异步API 回调函数 通过回调函数返回异步API的值 代码执行顺序 2. promise 解决回调...

  • js回调与异步编程

    回调与异步编程 一、回调函数的使用场景 异步编程。 事件监听、处理。 setTimeout、setInterval...

  • 异步与回调

    异步 我对异步的理解: 异步是不等结果,往下执行;同步是等结果出现后,再往下执行 代码中出现异步程序时,如例2中,...

  • 异步与回调

    异步代码的特点:书写顺序与执行顺序不同。 上面代码的书写顺序是1->2->3,但执行顺序是1->3->2。中间的s...

  • 异步与回调

    1. 同步 同步:一个任务执行完拿到结果之后,再执行下一步操作。即顺序执行代码。 2. 异步 异步:不等待一个任务...

  • 异步的实现

    异步的三种实现方式: 回调函数事件Promise 回调函数 回调函数不一定是异步 但是异步一定是回调函数。 事件 ...

  • 前端入门11 -- JavaScript之Promise

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

  • 同步、异步

    同步:等待结果异步:不等待结果 注意,异步常常伴随回调一起出现,但是异步不是回调,回调也不一定是异步。 【时序图】...

  • 异步和回调

    异步 异步就是「不等结果」,直接进行下一步怎么拿到结果回调可以拿到结果 回调 「回调是一种拿异步结果的方式」「回调...

  • (2018-05-30.Python从Zero到One)8、(T

    7 异步与WebSockets 知识点 理解同步与异步执行过程 理解异步代码的回调写法与yield写法 Torna...

网友评论

      本文标题:异步与回调

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