• 【前端每日基础】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();
    
  • 相关阅读:
    C# OpencvSharp异常FileNotFoundException具体解决办法
    【Spring Boot】Spring Bootd的介绍、项目的创建
    头条三面技术四面HR,我临危不乱,顺顺利利一周拿下!
    2022-git 如何切换分支
    C#语言实例源码系列-实现滚动字幕
    为什么团队的自动化没有效果?
    用于精准治疗和预防细菌感染的生物功能脂质纳米颗粒
    ASP.NET Core Web API 幂等性
    Mysql易错知识点整理(待更新)
    Linux系统下进程的概念《一》
  • 原文地址:https://blog.csdn.net/modaoshi51991/article/details/139425135