• 【前端每日基础】day43——同步异步


    同步 (Synchronous)
    同步指的是程序中的操作按顺序执行,每个操作必须等待前一个操作完成后才能开始。简单来说,同步操作会阻塞后续操作,直到当前操作完成。同步编程模式适合于需要按顺序执行的任务。

    示例:

    假设有三个任务 A、B 和 C,它们依次执行。任务 B 必须等待任务 A 完成后才能开始,任务 C 也必须等待任务 B 完成后才能开始。

    // 伪代码示例
    function taskA() {
      console.log('Task A completed');
    }
    
    function taskB() {
      console.log('Task B completed');
    }
    
    function taskC() {
      console.log('Task C completed');
    }
    
    taskA();
    taskB();
    taskC();
    
    // 输出顺序:
    // Task A completed
    // Task B completed
    // Task C completed
    

    在上述例子中,taskB 只有在 taskA 完成后才会执行,taskC 只有在 taskB 完成后才会执行。

    异步 (Asynchronous)
    异步指的是程序中的操作不必等待前一个操作完成后再开始。异步操作会在后台执行,不会阻塞后续操作。异步编程模式适合于需要并发处理的任务,例如网络请求、文件读取等。

    示例:

    假设有三个任务 A、B 和 C,它们是异步执行的,任务 B 和任务 C 可以在任务 A 完成之前启动并执行。

    // 伪代码示例
    function taskA() {
      setTimeout(() => {
        console.log('Task A completed');
      }, 1000); // 模拟异步操作,1秒后完成
    }
    
    function taskB() {
      setTimeout(() => {
        console.log('Task B completed');
      }, 500); // 模拟异步操作,0.5秒后完成
    }
    
    function taskC() {
      console.log('Task C completed');
    }
    
    taskA();
    taskB();
    taskC();
    
    // 输出顺序可能是:
    // Task C completed
    // Task B completed
    // Task A completed
    

    在上述例子中,taskA 和 taskB 都是异步操作,它们不会阻塞 taskC。因此,taskC 会立即执行并输出结果,而 taskA 和 taskB 会在各自的定时器完成后输出结果。

    同步和异步在实际编程中的应用
    同步操作:常见于需要严格按照顺序执行的任务,例如处理用户输入、简单的数学计算等。

    异步操作:常见于耗时操作,如网络请求、文件读取、定时任务等。通过异步操作,可以提高程序的并发性能和响应速度,不会因为某个耗时任务而阻塞整个程序。

    异步编程在 JavaScript 中的实现:

    回调函数:通过将回调函数作为参数传递给异步操作,在异步操作完成后调用回调函数。

    function asyncTask(callback) {
      setTimeout(() => {
        console.log('Async task completed');
        callback();
      }, 1000);
    }
    
    asyncTask(() => {
      console.log('Callback executed');
    });
    

    Promise:提供了一种更清晰的方式来处理异步操作,可以通过 .then 和 .catch 方法链式调用。

    function asyncTask() {
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          console.log('Async task completed');
          resolve();
        }, 1000);
      });
    }
    
    asyncTask().then(() => {
      console.log('Promise resolved');
    });
    

    async/await:是基于 Promise 的语法糖,使得异步代码看起来像同步代码。

    async function runAsyncTask() {
      await asyncTask();
      console.log('Async/await completed');
    }
    
    runAsyncTask();
    
  • 相关阅读:
    怎么运用大语言模型的
    【1.1】神经网络:关于神经网络的介绍
    KafkaConsumer-Kafka从入门到精通(十)
    外贸网站被谷歌收录的方法
    【开发环境】mysql5.7.xx win安装
    PointNet/Pointnet++训练及测试
    程序员搞副业一些会用到的工具
    python 2018全国自学考试第2章 第6题-other人的共识也是共识,等着下班期间重新设计一下简单的题
    Flink中的时间和窗口
    Elasticsearch Search API说明
  • 原文地址:https://blog.csdn.net/modaoshi51991/article/details/139425135