21、同步与异步(三种方法)

简介: 21、同步与异步(三种方法)

1、同步:按顺序一条一条数据执行

    // 1、同步:按顺序一条一条数据执行
    console.log('第1条数据');
    console.log('第2条数据');
    console.log('第3条数据');
    console.log('第4条数据');
    console.log('第5条数据');
    // 输出结果:1、2、3、4、5

2、异步:前一条数据不影响后一条数据执行

    // 2、异步:前一条数据不影响后一条数据执行
    setTimeout(() => { console.log('第1条数据') }, 3000);
    setTimeout(() => { console.log('第2条数据') }, 1000);
    setTimeout(() => { console.log('第3条数据') }, 3000);
    setTimeout(() => { console.log('第4条数据') }, 2000);
    setTimeout(() => { console.log('第5条数据') }, 3000);
    // 输出结果:2、4、1、3、5

3、异步获取数据的方法(3种)


  1. 回调函数
  2. ES6的Promose内置对象
  3. async函数


4、异步获取数据的方法(回调函数)

    // 1、回调函数
    var target = 'Hello world!';
    function getDate(fn) {
      setTimeout(() => {
        fn(target);
      }, 500)
    }
    getDate((target) => {
      console.log(target);    // 输出结果:Hello world!
    })


5、异步获取数据的方法(promise内置对象)

    // 2、ES6(promise)内置对象,专业处理异步
    var target = 'Hello world!';
    var result = new Promise((resolve) => {
      setTimeout(() => {
        resolve(target);
      }, 500)
    })
    result.then((target) => {
      console.log(target);    // 输出结果:Hello world!
    })


6、异步获取数据的方法(async函数)

    // 3、async函数解决异步问题
    function getDate1() {
      return new Promise((resolve) => {
        setTimeout(() => {
          resolve(target);
        }, 500)
      })
    }
    async function fun() {
      // await:等待
      let target1 = await getDate1();
      console.log(target1);
      let target2 = await getDate1();
      console.log(target2);
      let target3 = await getDate1();
      console.log(target3);
    }
    fun();


相关文章
|
前端开发 JavaScript UED
|
前端开发
异步转同步的几种方法
在循环等待中,我们可以使用一个变量来指示异步操作是否已完成。然后,我们可以在循环中检查该变量,如果它指示异步操作已完成,则退出循环。
566 0
|
7月前
|
负载均衡 算法 前端开发
同步和异步
同步和异步
92 0
|
7月前
|
Python
同步和异步的区别
同步和异步的区别
|
7月前
|
Java 数据处理 调度
异步、半同步、同步
异步、半同步、同步
158 0
|
JavaScript 前端开发 UED
同步和异步区别
同步和异步区别
160 0
|
7月前
同步和异步的区别?
同步和异步的区别?
170 0
|
7月前
|
存储 JavaScript 前端开发
|
7月前
|
前端开发 JavaScript
同步和异步有什么区别
同步和异步有什么区别
255 0
同步和异步[多线程的异步执行操作]
同步和异步[多线程的异步执行操作]
55 0