首页 > 其他分享 >前端多线程处理——async/await

前端多线程处理——async/await

时间:2023-10-28 17:11:37浏览次数:26  
标签:function 输出 err await print async 多线程

  async 从字面上看就是“异步”,它放在函数定义之前,是使该函数在调用时开一个子线程,以不影响主线程的运行。

  而 await 经常和 async 组合使用,在 async 定义的函数中来等待需要时间运行的代码(如ajax请求、Promise对象)的运行结果,以做后续的处理。

  如下面的返回Promise对象的函数:

function print(delay, message) {
    return new Promise(function (resolve, reject) {            // 返回Promise对象
        setTimeout(function () {                               // 延迟执行函数
            console.log(message);
            resolve();
        }, delay);
    });
}

  如果需要运行通过,就需要经过then、catch、finally函数来执行响应的代码:

print(1000, "First").then(function () {            // 1秒之后输出“First”
    return print(2000, "Second");                  // 2秒之后输出“Second”
}).then(function () {
    return print(1000, "Third");                   // 1秒之后输出“Third”
}).then(function (){
    print(2000, "Fourth");                         // 2秒之后输出“Fourth”
});

   而使用 async/await 可以实现同样的效果,使用异步操作就像同步操作一样简单:

async function asyncFunc() {
    await print(1000, "First");
    await print(2000, "Second");
    await print(1000, "Third");
    await print(2000, "Fourth");
}
asyncFunc();

  而对于 Promise 中的异常处理,使用 try-catch 来实现:

async function asyncFunc() {
    try {
        await print(1000, "First");          //1秒后输出"First"
        });
    } catch (err) {
        console.log(err);                    //输出异常错误
    }
    try {
        await print(2000, "Second");         //2秒后输出"Second"
        });
    } catch (err) {
        console.log(err);                    //输出异常错误
    }
    try {
        await print(1000, "Third");          //1秒后输出"Third"
        });
    } catch (err) {
        console.log(err);                    //输出异常错误
    }
    try {
        await print(2000, "Fourth");         //2秒后输出"Fourd"
        });
    } catch (err) {
        console.log(err);                    //输出异常错误
    }
}
asyncFunc();

 

标签:function,输出,err,await,print,async,多线程
From: https://www.cnblogs.com/wuxxblog/p/17794303.html

相关文章

  • Java基础 多线程的 6 种状态
       Java的虚拟机当中没有定义运行状态,因为当线程抢夺到CPU执行权的时候,虚拟机会把当前线程交给操作系统管理,虚拟机就不管了。 ......
  • Java继承 多线程的实现方式——利用 Callable 接口 和 Future 接口方式实现
    利用Callable接口和Future接口方式实现:这种实现方式可以获取到多线程运行的结果 步骤:1.创建一个类,类名比如叫MyCallable,并实现 Callable接口  注:Callable接口有一个泛型,因为这种方式可以获取到多线程运行的结果,泛型就表示结果的类型2.重写 Callable接口里面......
  • Java基础 多线程的实现方式——实现 Runnable 接口的方式进行实现
    实现Runnable接口的方式进行实现:1.定义一个类实现 Runnable接口,并实现run方法2.在run方法里面书写该线程要执行的代码3.然后创建这个实现 Runnable接口的类的实例化对象,这个对象其实就表示多线程要执行的任务4.再去创建一个Thread类的对象,然后把 实现 R......
  • Java基础 多线程的实现方式——继承 Thread 类的方式
    多线程的三种实现方式:1.继承Thread类的方式进行实现2.实现Runnable接口的方式进行实现3.利用Callable接口和Future接口方式实现 一、继承Thread类的方式:将类声明为Thread的子类,该子类应重写Thread类的run方法,接下来可以创建子类的对象并启动线程。在......
  • 多线程程序是如何执行代码的?
    进程与线程概念、区别、以及线程间的通信概念进程是对程序运行时的封装,是操作系统分配资源的基本单位,实现操作系统的并发。线程是进程的子单位,是CPU调度和分派的基本单位,实现进程内部的并发。是OS识别的最小执行与调度单位,每个线程独占一个虚拟处理器,每个线程完成不同的任务,但......
  • Web 应用程序中进行多线程处理-Web Workers
    1、什么是WebWorkers?WebWorkersAPI是一组用于创建并在后台运行脚本的接口,以便在Web应用程序中进行多线程处理。它使得可以将一些耗时的计算任务放在单独的线程中执行,从而避免阻塞主线程,提高了应用程序的响应性能。2、使用方式以下是WebWorkersAPI中常用的接口和方法:Worke......
  • 前端多线程处理 —— Promise对象
    在前端编程中,处理一些简短、快速的操作,在主线程中就可以完成。但是,在处理一些耗时比较长以至于比较明显的事情,比如读取一个大文件或者发出一个网络请求,就需要子线程来完成,以避免只用单线程时造成页面一时无法响应的事情。以发送网络请求为例,在以往的JavaScript中,使用多个回调函......
  • Java基础 多线程
    进程:进程是程序的基本执行实体(简单理解就是,一个软件运行之后,它就是一个进程)线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。简单说,线程就是应用软件中互相独立的、又可以同时运行的功能。如果这样的功能比较多,就形成了多线程 ......
  • Python threading实现多线程 提高篇 线程同步,以及各种锁
    本文主要讲多线程的线程之间的资源共享怎么保持同步。多线程基础篇见,Pythonthreading实现多线程基础篇Python的多线程,只有用于I/O密集型程序时效率才会有明显的提高,如文件/输入输出/socket网络通信/http通讯等待。对于计算密集型程序一般采用多进程,这里不多讲。一、多线程的......
  • Python threading实现多线程 基础篇
    讲多线程前,先要了解什么是进程,什么是线程,已经知道的请略过。一、进程与线程:进程是资源分配的最小单位,一个程序至少有一个进程。线程是程序执行的最小单位,一个进程至少有一个线程。进程都有自己独立的地址空间,内存,数据栈等,所以进程占用资源多。由于进程的资源独立,所以通讯不方......