广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS ES6异步解决方案
  • 580
分享到

JS ES6异步解决方案

2024-04-02 19:04:59 580人浏览 薄情痞子
摘要

目录最初使用回调函数es6 异步处理模型为该异步模型量身打造的api : promise最初使用回调函数 ​ 由于最初j s官方没有明确的规范,各种第三方库中封装的异步函

最初使用回调函数

​ 由于最初j s官方没有明确的规范,各种第三方库中封装的异步函数中传的回调函数中的参数没有明确的规范, 没有明确各个参数的意义, 不便于使用。

​ 但是node中有明确的规范

​ node中的的回调模式:

1. 所有回调函数必须有两个参数,第一个参数表示错误,第二个参数表示结果

2. 所有回调函数必须作为函数最后的参数

3. 所有回调函数不能作为属性出现

es6 异步处理模型

Es6 出现以后, 官方就提出了异步处理的规范, 提出了一种适用于所有异步场景的处理模型。该模型有:

  • 两个阶段: 未决unsettled, 已决settled。
  • 三个状态: pending挂起状态 , resolved成功, rejected失败
  • 总是从未决阶段推向已决阶段,且已决阶段的状态不再改变

任务已决状态后可能需要后续处理,

  • 针对resolved的后续处理我们称之为thenable
  • 针对rejected的后续处理我们称之为catchable

为该异步模型量身打造的API : promise

如何使用promise

Copy


const task = new Promise((resolve, reject) => {     
    // 任务未决阶段代码  
    // 立即执行  
    console.log("开始100米长跑");  
    setTimeout(() => {  
       if (Math.random() > 0.5) {  
           // 成功: 跑完了  
           // 推向成功  
           resolve("跑完了");  
       } else {  
           // 失败: 腿摔断了  
           // 推向失败  
           reject("腿摔断了");  
       }  
    }, 1000)
});
task.then((result) => {
  console.log(result);
}).catch((error) => {
  console.log(error);
})

1s 后任务推向已决, 后续处理在then 或者 catch中 处理。

注意

pending状态 =》rejected状态 :

Copy

1. 调用reject

2. 代码执行报错

3. 手动抛出错误

后续处理函数一定是异步的,且会放到微队列中,

j s执行栈清空后会先执行微队列中的任务,微队列里任务清空后才会执行宏队列中的任务。

  • 宏任务队列有:setTimeout,setInterval,setImmediately,I/O,UI render
  • 微任务队列有:promise,process.nexttick,Object.observe(已经不用了),Mutation.observe

Async await 是es7新增的promise的语法糖大家也可以了解下,本文只是对promise做了个概述,要掌握的其他细节还有很多

以上就是js ES6异步解决方案的详细内容,更多关于ES6异步解决方案的资料请关注编程网其它相关文章!

--结束END--

本文标题: JS ES6异步解决方案

本文链接: https://www.lsjlt.com/news/124906.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS ES6异步解决方案
    目录最初使用回调函数es6 异步处理模型为该异步模型量身打造的API : promise最初使用回调函数 ​ 由于最初j s官方没有明确的规范,各种第三方库中封装的异步函...
    99+
    2022-11-12
  • js异步处理方案,js的异步串行与异步并行
    目录js异步处理方案,js的异步串行与异步并行一、什么是串行,并行,并发二、实现异步串行三、实现异步并行js异步处理方案,js的异步串行与异步并行 一、什么是串行,并行,并发 串行:...
    99+
    2023-03-24
    javascript异步处理 js异步串行与并行
  • JavaScript异步解决方案有哪些
    这篇文章主要介绍“JavaScript异步解决方案有哪些”,在日常操作中,相信很多人在JavaScript异步解决方案有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript异步解决方案有哪些...
    99+
    2023-07-05
  • Go异步任务解决方案 Asynq
    今天为大家介绍一个Go处理异步任务的解决方案:Asynq,是一个 Go 库,用于排队任务并与 worker 异步处理它们。它由Redis提供支持,旨在实现可扩展且易于上手。 一、概述 Asynq...
    99+
    2023-09-05
    golang java docker redis 异步任务
  • JS异步编程有哪些方案
    这篇文章主要讲解了“JS异步编程有哪些方案”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS异步编程有哪些方案”吧!关于 JS 单线程、EventLoop ...
    99+
    2022-10-19
  • JS异步编程方案有哪些
    本篇内容主要讲解“JS异步编程方案有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS异步编程方案有哪些”吧!一、同步与异步我们可以通俗理解为异步就是一个任...
    99+
    2022-10-19
  • 总结5种JavaScript异步解决方案
    目录1.回调回调的优点和缺点2.事件监听(发布订阅模式)事件监听的优点和缺点3.PromisePromise 优点和缺点4.GeneratorGenerator的优点和缺点5.asy...
    99+
    2023-05-15
    JavaScript异步解决 JavaScript异步解决方法
  • Go异步任务解决方案之Asynq库详解
    目录一、概述二、快速开始1. 准备工作2. 安装asynq软件包3. 创建项目asynq_task4. Task任务5. 编写程序6. 运行查看结果三、细节1. 关于asynq的优雅...
    99+
    2023-02-15
    go 异步任务 golang异步 go异步任务asynq
  • JS异步编程方法的6种方案总结
    目录前言:一、回调函数二、事件监听三、发布/订阅四、Promises对象五、生成器函数 Generator/yield六、async/await 函数的实现总结:前言: javasc...
    99+
    2023-01-31
    js异步编程方法有哪些 js 异步方法 js异步机制
  • Spring @Async无法实现异步的解决方案
    目录Spring @Async无法实现异步问题原因解决办法@Async不起作用1.xml头文件必须配置标记红色部分2.配置任务和线程池3.配置spring依赖的jar(不介绍这个了)...
    99+
    2022-11-12
  • 解决JS问题的ES6方法有哪些
    本篇内容介绍了“解决JS问题的ES6方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、如何隐藏所...
    99+
    2022-10-19
  • java.lang.NumberFormatException异常解决方案详解
    前言:        在做后台时用的jsp开发,在页面向controller传参时用String接收的参数,但是数据库实体中jies接收该参数...
    99+
    2022-11-12
  • java.lang.ArrayStoreException异常的解决方案
    java.lang.ArrayStoreException异常 异常提示 java.lang.ArrayStoreException: java.lang.Boolean at j...
    99+
    2022-11-12
  • Java NegativeArraySizeException异常解决方案
    问题描述:服务器接收后台返回的报文时,提示java.lang.NegativeArraySizeException 分析:这种异常返回的原因,一般情况下没有报文提示为返回空报文,初步分析是响应报文流长度出了问题 百度一下类似的情况:http...
    99+
    2017-12-27
    Java NegativeArraySizeException Java NegativeArraySizeException异常
  • Java ClassCastException异常解决方案
    ClassCastException是JVM在检测到两个类型间转换不兼容时引发的运行时异常。此类错误通常会终止用户请求。在执行任何子系统的应用程序代码时都有可能发生ClassCast...
    99+
    2022-11-12
  • ASP异步编程的常见问题及解决方案?
    ASP异步编程的常见问题及解决方案 随着互联网技术的不断发展,网页的交互性和实时性要求也越来越高。而ASP异步编程技术可以帮助开发者解决这些问题。但是,ASP异步编程也会遇到一些常见问题,本文将结合实例介绍这些问题及其解决方案。 一、什么是...
    99+
    2023-09-12
    异步编程 面试 windows
  • 怎么使用JS promise解决异步问题
    这篇“怎么使用JS promise解决异步问题”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用JS ...
    99+
    2023-07-05
  • java.lang.NullPointerException异常问题解决方案
    java.lang.NullPointerException异常原因是因为创建了一个引用类型的变量却没有指向任何对象而又去通过这个引用类型变量加点的形式去访问非静态的方法及属性。 给...
    99+
    2022-11-12
  • Python异步编程:比Laravel和JavaScript更快的解决方案?
    随着互联网应用的不断普及,对于高并发、高并行的需求越来越多。而传统的同步编程方式会导致阻塞,进而降低应用的性能。因此,异步编程成为了解决高并发、高并行的重要手段。Python作为一门流行的编程语言,也提供了强大的异步编程支持。在本文中,我...
    99+
    2023-09-08
    异步编程 laravel javascript
  • Activity/Fragment结束时处理异步回调的解决方案
    头疼的IllegalArgumentException在Android开发的过程中,涉及到与UI相关的操作只能在主线程执行,否则就会抛出以下异常:android.view.ViewRoot$CalledFromWrongThreadExce...
    99+
    2023-05-31
    activity fragment 异步回调
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作