Promise 入门(推荐)

本文详细介绍了JavaScript中异步回调的问题、解决方法,以及Promise的使用方式,包括其基本概念、入门实例、进阶特性和常见测试。通过分析不同场景下异步操作的管理,阐述了如何利用Promise简化异步编程流程,提升代码可读性和执行效率。

课程地址:https://www.imooc.com/learn/949

 一、课程介绍及异步问题

7c88454f629790abf21471d853017ef99de.jpg

b265e6a6ebc24725cc2d5690b3c12446fee.jpg

将来的状态

45d720ef70314934a83be87dbac004c9940.jpg

45b3d73e2a6d561c0f41bf1b3663495fda4.jpg

e10282dc60e265bd9ef72465145b4eca4fb.jpg

41c714b23312a6fa0207bf843464d4be7b4.jpg

633777601bbd90f8ea32ef699fcbf28af7b.jpg

92412b7e822b334d5337b8eeb94e3b31ef5.jpg

96eefa9ccc14317b517e707db8462ce378b.jpg

fb8d2e9175a74af223f0c048317c89653ce.jpg

3cca5b5a7158f28a2fdd1cf9ad7b1487bb1.jpg

8921278908c9351adb915027d4bd0576231.jpg

9e630a0ac7c93ba6fa735d249005f1300b6.jpg

1201f7b9d59a71524f48bd369a715bbb29e.jpg

eb139ee5e93e78f7264d6297488ddeb2541.jpg

f51d1ab98e7ef2c069cd05b1a83502f5ea1.jpg

861b971412b1e65546e490f8ac697810bc6.jpg

2808f51d455958c7c11ea03a21c31648fd2.jpg

错误1:入栈出栈,前后两个函数不在同一个栈。异步回调的过程中没有办法是由try...catch

错误2:前面声明的变量不仅能被外面函数使用,也能被别的函数使用修改,违背关注点统一的原则

总结:异步回调函数会在一个新的栈里运行,所以在这个栈是没办法获取之前栈的信息的,之前抛出的信息的,异步回调的时候没有办法像以前那样try...catch处理错误;没有办法判断这些文件什么时候处理完成,所以在高级作用域链-外层声明很多变量,内层去使用,导致被其他修改

3e48490f5e80210a69d4ca5280450f5e2c0.jpg

8d7c8acf661be1e87e347cfd5f784197d0b.jpg

二、Promise 入门

017ba76bd6fdbcf4b68e22dc8bdf19d1e4b.jpg

10cb92c424a6e9b3883f08b78cb47e113fb.jpg

2b5b584e44c8cd8d7fb128df610770e7a59.jpg

7b394d77eb6a220cfbd1df14744832b1592.jpg

4e762c334a589a765f37f89d4afad563cf5.jpg

d6e91559eeb225d5a3fcc70785fe879b16b.jpg

6ac7b8503dcd1e9162c1c17e1ae108de48c.jpg

efbcf09a7c767a67c1140036fbd56872085.jpg

9b6d84d49b3ed236f06d7af0fe77bfbeb29.jpg

b226da59d63c5607c246df2e33ac5cfa730.jpg

22a67ef71d118ffab80e8eba4d22c5e1ffd.jpg

027ad67b9e01768711bd9957487ffde7642.jpg

9394f707ca2570ff136286defa69bb109a2.jpg

如果只有一个异步回调使用promise是没有意义的,只有在多个连续的异步回调里,promise才有意义

8dd97bd915d81bc77863a8b5fa838e0cbac.jpg

2a29d945cdb37b9f88c0109867524a3857a.jpg

a4418d6401f1cbc4d21d496cc112db62a01.jpg

start——1秒之后输出the promise fulfilled——2秒之后刷出hello,world

在任何地方生成一个promise队列,可以把它作为变量传递到其他地方

如果操作是一个很明显的队列(先进先出),可以在后面追叙then

不管前面状态是不是完成了,都会按照顺序完成。如果完成了,后面返回的then也会得到前面promise返回的值

1ffb9dd4c708999864979963f480e08830e.jpg

1fa6687ac374b0f12587d67e24c2c6f3e65.jpg

97c4c36f452c6e5429a6ec502f2d72b2113.jpg

7062d18d2144444c5947a7d95f9ff3ea236.jpg

这三个是同时输出

then没有等到里面的promise返回的实例,直接执行了下一个then,但是这个then里面立即执行里的promise里的定时器又会在2s之后执行

在promise实例里如果不直接返回promise实例,他就会直接执行下一个,即时里面返回了false,也不影响下一步,因为false会直接传递到下面

a5b2f169f1b8d51475b6b8b49b9cfb595c1.jpg

没有明确返回值,相当于返回undefind。

整个进程仍然是等到完成才会执行

42812658abdb17e8ec26ce36342a17474d6.jpg

3ac08123ee94e8fb724872663b062a18984.jpg

三、小测试

be86b5f241613e0fad190c4ee44f01a14be.jpg

002228b5c95f5e8562094fc204c7dd41996.jpg

83a63b4102c82821a9a578a985fd6154db9.jpg

531d4ba490bdb942dfda6909d66283387b6.jpg

bd85efa36ccd0e47e592a34994c08fb7d07.jpg

a1c94580f10d5e55edb3d6ad203fd62569b.jpg

展开里面的then。执行效果一样,看起来更清晰

e2090e7c8681f2719fa0a511c2b9031a79e.jpg

假设dosomething和dosomethingelse都返回promise实例

18c8cbc3e7d7a01d465d15e1fc3e4f3081f.jpg

a1ca5be2dd80975011de0b75560eefa33c3.jpg

917b46b9f41059bb736a6c4b58493744915.jpg

94112af2e115277a9c081cdc9a8344108c5.jpg

544d63b398ea792a48156e334750f31887e.jpg

e3d983b3df6a1fbe02dd758eb358808904d.jpg

2dcdf8f4c4045b54737d859aa2a3bfc1b9d.jpg

04aaf50423002ff5fe7b83888df2462c627.jpg

7763a4e69fe34a76ea51b2c29e6a729755e.jpg

13b90668631f3b0f406a4f487a9446f24d6.jpg

e2104cbcee39e4761ce08336bfa6f35667f.jpg

2e18801f1921be10a2136af5cb998c62a95.jpg

9d15d94c0b253359754c9b2d18b27cdc89e.jpg

第二种:当then也发生错误,catch也可以捕获

e266a0682d7f5702adbe4b66150fe4c29f3.jpg

24a86420ffc2105f84d97e5484c5438ae4b.jpg

2ce811c4d1ef16fb9f02731c9c3a17f967e.jpg

0d651246cd9f9b5ed2650bd5ac9b6f14418.jpg

catch也会返回promise实例,并且其中没有抛出错误的话,他返回的实例也是fulfilled的状态

23697e6add593261241407b8239b88c78fa.jpg

变化后,跳过2个then,到下一个catch

d64310d9b7a473aaae606b93544432b8724.jpg

四、Promise 进阶

36ddb405dd7e6e6a21c85776b823ae60c88.jpg

b7afd754f1e2d8ebb1c17a717d9c67a6875.jpg

 

f4bc0296fad16f5cd1a4e24040636d9352f.jpg

cc72be7b8a04ce270753c49a425f472e811.jpg

d7c0a4eb0bfac48ba78c7f84e0ebc069bb3.jpg

e73a9b76539cfec7c7bde7108e01494be3d.jpg

ecc045348e9978822d74f95b5fccccfae79.jpg

cbf8a03bf090f09fcecbf165a290a9a15be.jpg

9d3cbda3ddfc195fcd6f28c35852ef8e811.jpg

6e3092dcd93b7212f8bc0634f11a163502f.jpg

4039afa45945270ac56120a0201f3451e51.jpg

8be600a5b067d553d242c009b863b281ff8.jpg

e1585f75d8380aa830cc501010e5c800237.jpg

66f1dfdc123c84905cb526f2f92e8745507.jpg

339c1971c9c6f233e2bbab91c6e32674797.jpg

8d2d6a6a7382f56dc38b95740b6fed02589.jpg

2e86eb97246d0558467a12f781be5e52456.jpg

10c4cd12e9048db6e42210c1e5ac75d3c55.jpg

3dcb6277aab29788ff9208951457584c630.jpg

9aae80b06b890dff71fb00b2d3fe0ef99e0.jpg

3adbe5b762f3660635be4382a883132397c.jpg

bb8c6970eb42bbb926c71490a1953d0d8f2.jpg

74533d0c8127bc2d2a35cdecdd3c928dcca.jpg

1c5648698f7a2ef1d0580a76f68adfb85c6.jpg

prommise的状态只能由执行器里面改变,不能由外界改变

d4ee8d1bb6a5afb7acfdd77b87492c960d9.jpg

c8debbba40566c2eaa38a10a620c7f4f914.jpg

aa9e4f3b870138c642dfb17b71c2a6d4cbd.jpg

未来版本会提高reject的权重,会终止这段代码的执行

8914696d3c7dc9f41ae705368fea2e693a7.jpg

a0f1d1b08c1266a5fadf86d26cd80df204d.jpg

8ebe9b2f5273f47f0213835bcd6db0a7222.jpg

P2输出后,进程并没有执行完,进程需要等待P1执行完才能完

6719e4d48865b4feba449253fc85b9d8c45.jpg

53f230e1f50437fe40211a8be7f46cb3167.jpg

8cc93e5d5a3cc210925c882007fbd0e1e99.jpg

6ae7be7b12a2e45fc06d5a07c2ffb77cedc.jpg

a285b8ab0d42e3010ecf928649f22e94a9a.jpg

c18e340af50c188d99e83e86efc6fdabef3.jpg

8b0c321055f5b157032b0ae277b0199fd24.jpg

deb33522e388d38bd5c175412088fdbf48d.jpg

 77c61618164a8efca5e0730d192f8688089.jpg

be252666b4b6aa1ff6bf47db96829fb350c.jpg

jQuery3.0及之后版本支持完整promise规范,之前和标准规范有些诧异

bb1d80e6de7c5709665ecc3c951642a17e5.jpg

c7a9a6fb6bbd0148ba6a784ba7b766afc68.jpg

IE8-11都不支持promise,IE edge支持

894eafc752f4ce42b1f3d32a909c68cf75c.jpg

b0d73e91fb30773b6548db649478ceb8461.jpg

f24ccd3b134c00096cb9b1b73a82365ec25.jpg

6d8f98a4fa51279a09d3214cede8e0cf6aa.jpg

ce59a1a13b18acbfc23b50bd3f4f6439235.jpg

e14f9a3a93e48e47213264f6d009cd7b7fa.jpg

源码:https://github.com/merrier/imooc-promise-sample

转载于:https://my.oschina.net/u/3018050/blog/1947238

标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策和风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理和建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集和测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值