标签 异步编程 下的文章 - Lino笔记
首页
笔记
关于
友链
壁纸
留言板
搜 索
1
Joe主题重制版 - 本站同款
117 阅读
2
小米手机刷面具教程(纯小白篇)
33 阅读
3
MAC PD19 破解
20 阅读
4
CNS服务器搭建(配合百度直连)
18 阅读
5
label标签中的for属性
15 阅读
技术杂谈
生活随笔
日常分享
杂七杂八
登录
搜 索
标签搜索
JS
博客部署
心理学
mysql
hexo
异步编程
Promise函数
ShadowSocks
代理
境外服务器
typecho主题
网易云
价值观
Typora
破解
笔记
centOS
redis
Joe主题
代码整洁
Lino
累计撰写
27
篇文章
累计收到
8
条评论
首页
栏目
技术杂谈
生活随笔
日常分享
杂七杂八
页面
笔记
关于
友链
壁纸
留言板
用户登录
登录
找到
1
篇与
异步编程
相关的结果
2023-08-18
javascript异步编程——Promise函数的理解
了解异步编程异步(Asynchronous, async)是与同步(Synchronous, sync)相对的概念。在我们学习的传统单线程编程中,程序的运行是同步的(同步不意味着所有步骤同时运行,而是指步骤在一个控制流序列中按顺序执行)。而异步的概念则是不保证同步的概念,也就是说,一个异步过程的执行将不再与原有的序列有顺序关系。简单来理解就是:同步按你的代码顺序执行,异步不按照代码顺序执行,异步的执行效率更高。以上是关于异步的概念的解释,接下来我们通俗地解释一下异步:异步就是从主线程发射一个子线程来完成任务。在理解Promise函数前,我们应该先了解什么是异步编程:理解Promise函数Promise函数 是一个 ECMAScript 6 提供的类,目的是更加优雅地书写复杂的异步任务。了解 Promisenew Promise(function (resolve, reject) { // 要做的事情... });Promise 构造函数是 JavaScript 中用于创建 Promise 对象的内置构造函数。Promise 构造函数接受一个函数作为参数,该函数是同步的并且会被立即执行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject,分别表示 Promise 成功和失败的状态。起始函数执行成功时,它应该调用 resolve 函数并传递成功的结果。当起始函数执行失败时,它应该调用 reject 函数并传递失败的原因。Promise 构造函数返回一个 Promise 对象,该对象具有以下几个方法:then:用于处理 Promise 成功状态的回调函数。catch:用于处理 Promise 失败状态的回调函数。finally:无论 Promise 是成功还是失败,都会执行的回调函数理解PromisePromise 对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)、rejected(已失败)Promise构造函数接收一个函数作为参数,该函数的两个参数分别是 resolve 和 reject一个promise对象只能改变一次状态,成功或者失败后都会返回结果数据。then 方法可以接收两个回调函数作为参数,第一个回调函数是Promise对象的状态改变为 resoved 是调用,第二个回调函数是 Promise 对象的状态变为 rejected 时调用。其中第二个参数可以省略。catch 方法,该方法相当于最近的 then 方法的第二个参数,指向 reject 的回调函数,另一个作用是,在执行resolve回调函数时,如果出错,抛出异常,不会停止运行,而是进入catch 方法中。注意:catch 只捕获最近的 then 的回调函数,前面的then的执行不成功的结果,有后面 then 的 reject 回调函数执行,如果没有后续 then 回调函数执行,则会被 catch 捕获执行var promise =new Promise(function(resolve,reject){ //To Do 要异步执行的事情,这个异步执行的事情有可能成功执行完毕,那么Promise将是fulfilled状态,如果执行失败则是rejected; //下面测试代码,人为设置为rejected状态; reject("将当前构建的Promise对象的状态由pending(进行中)设置为rejected(已拒绝)"); //当然此处也可以设置为fulfilled(已完成)状态 }) promise.then(//调用第一个then() success=>{ console.log("异步执行成功,状态为:fulfilled,成功后返回的结果是:"+success); return(" 当前 success "); }, error=>{ console.log("异步执行失败,状态为rejected,失败后返回的结果是:"+error); return(" 当前 error "); } ).then( //调用第二个then() 因为调用第一个then()方法返回的是一个新的promise对象,此对象的状态由上面的success或者error两个回调函数的执行情况决定的: //如果回调函数能正常执行完毕,则新的promise对象的状态为fulfilled,下面执行success2,如果回调函数无法正常执行,则promise状态为rejected;下面执行error2 success2=>{ console.log("第一个then的回调函数执行成功 成功返回结果:"+success2); throw(" 当前 success2 ");//自定义异常抛出 }, error2=>{ console.log("第一个then的回调函数执行失败 失败返回结果:"+error2); return(" 当前 error2 "); } ).catch(err=>{ //当success2或者error2执行报错时,catch会捕获异常; console.log("捕获异常:"+err); }); //上述代码,打印如下: //异步执行失败,状态为rejected,失败后返回的结果是:将当前构建的Promise对象的状态由pending(进行中)设置为rejected(已拒绝) //第一个then的回调函数执行成功 成功返回结果: 当前 error //捕获异常: 当前 success2
2023年08月18日
13 阅读
0 评论
1 点赞