promise的各种形式(深入理解 promise:promise的三种状态与链式调用)

本文目录
- 深入理解 promise:promise的三种状态与链式调用
- promise doing和promise to do的区别是什么
- promise和pledge的区别是什么区别,用法,句型
- promise to do和promise doing都有吗
- 帮你弄懂Promise原型方法then、catch、finally
- Promise to do. Promise doing 什么区别
- promise的用法及作用
- promise的三种状态
深入理解 promise:promise的三种状态与链式调用
promise有三种状态:pending/reslove/reject 。pending就是未决,resolve可以理解为成功,reject可以理解为拒绝。
一个简易的promise例子:
promise的最终状态会凝固,成功了以后即便再执行reject(’failed’)状态也不会改变。
第一种就是上面的例子:
第二种就是把第一种方法的第二个函数拿出来做为catch,效果和第一种一样:
第三种,也可以只单独接收一种状态:
promise的 then 方法之后会继续返回一个promise对象
例子如下:
使用node执行后的结果如下:
从结果我们可以看出:使用then方法之后会返回一个promise对象,可以继续用then方法调用,再次调用所获取的参数是上个then方法return的内容;同时,我们还看到p先被打印出来,证明promise本身就是异步的,而且p本身也是一个pending状态的promise对象。
上面的这个例子只是一种情况,即第一次then之后所返回promise不会出现reject的状态,但如果我们在第一次then之后再手动返回一个可能包含reject状态的promise的话,那么错误链式调用过程中的错误处理就是大问题了,因为第二次then是不带错误处理机制的,这就要求我们在promise里的reject状态里直接写上对应的错误处理机制。具体的例子可以参见下篇文章。
上面的例子表示: 我们可以通过Promise.resolve()将一个字符串、数字或者对象等转换成一个成功状态的Promise对象。
但是如何我们将一个promise对象作为参数传递给Promise.resolve()方法会怎么样呢?
从结果上看: 将一个promise对象传递给Promise.resolve()方法会被直接返回。
使用方法和Promise.resolve一致。
promise doing和promise to do的区别是什么
promise doing和promise to do的区别为:
一、指代不同
1、promise doing:承诺做某事。
2、promise to do:答应做某事。
二、用法不同
1、promise doing:promise作“允诺”“答应”解时,是指作出口头或书面的许诺,答应别人自己去做某事,但仅指主观意愿,并不一定能实现或有实现的基础。
2、promise to do:promise作名词的基本意思是“承诺,诺言”,是可数名词,promise也可作“希望,出息”解,可用来指人的出息,也可用来指事情有希望,是不可数名词。
三、侧重点不同
1、promise doing:这里的doing表示这件事已经在进行中了。
2、promise to do:to do表示这件事还没有做,但是已经允诺去做了。
promise和pledge的区别是什么区别,用法,句型
这两个词的区别我懂,Promise更加强调个人决定和责任,表达出行动、态度和说明的承诺,而Pledge则突出了对某种团体或概念的效忠和贡献。给大家简单总结了两个词的含义、发音以及用法,先大概的了解一下~~
接下来让我们看下promise和pledge的其他区别:
1. Promise通常指表达了自己努力去实现某事、履行某种行动或者使他人满意的承诺,而Pledge强调对某种信仰、原则或者群体的效忠和献身。
例句:
- She promised to help him with his homework.
她承诺帮他做作业。
- The soldiers took a pledge of allegiance to defend the country.
士兵们发誓服从国家,保卫国土。
2. Promise通常是对个人或个人之间的承诺,而Pledge则更多地涉及到对组织、集体或者社会的承诺。
例句:
- He promised his girlfriend that he would always be there for her.
他向女友保证他会永远陪伴在她身边。
- She signed a pledge to work for the betterment of the community.
她签署了承诺书,要为社区的发展做出贡献。
3. Promise更加强调个人决定和责任,表达出行动、态度和说明的承诺,而Pledge则突出了对某种团体或概念的效忠和贡献。
例句:
- The politician promised to create more jobs and improve the economy.
政治家承诺创造更多就业机会,改善经济状况。
- The volunteers took a pledge to protect the environment and preserve natural resources.
志愿者们发誓保护环境,保护自然资源。
4. Promise涉及许多方面的责任义务,可以针对某事情具体的承诺,而Pledge通常针对一组具有普遍性的价值观念。
例句:
- The company promised to provide a high-quality service to its customers.
公司承诺向客户提供高质量的服务。
And as we walk, we must make the pledge that we shall march ahead.
当我们行动时,我们必须保证勇往直前。
promise to do和promise doing都有吗
promise to do和promise doing都有。区别为:词性不同、侧重点不同、用法不同。
一、词性不同
1、promise to do:promise to do表示承诺去做某事。
2、promise doing:promise doing表示答应干某事。
二、侧重点不同
1、promise to do:promise to do侧重于还没有做的事。
2、promise doing:promise doing侧重于已经在做的事。
三、用法不同
1、promise to do:可用于过去的许诺,I never promised to do all these things. 我许诺做所有这些事情。
2、promise doing:只可用于正在和未来的许诺。"Do you promise doing whatever I tell you?" said the Master gravely.
“你能发誓按我说的去做吗? ”大师严肃地说。
帮你弄懂Promise原型方法then、catch、finally
PS: 最近一周加班太多,没有太多空闲时间读书,暂时先这一篇吧!
Promise 构造函数的原型上实现了 then , catch , finally 方法,也就意味着每个 Promise 实例都拥有这样 3 个函数。
另外提一下 Promise 构造函数上实现了 all , race , reject , resolve , allSettled , any 方法,==这些方法只属于 Promise 构造函数自己,是不能在实例中被调用的==(也就是只会以这种形式出现:如 Promise.all() )
then() 方法可以处理 Promise 被接受或拒绝的情况。
then() 最多可以接受两个参数 (回调函数):
① onFulfilled
当 Promise 变成接受状态 ( fulfilled ) 时调用的函数。该函数有一个参数,即接受的最终结果 (the fulfillment value)。
如果该参数 (指的是 onFulfilled ) 不是函数,则会在内部被替换为 (x) =》 x ,即原样返回 promise 最终结果 (后面会讨论 then 方法的返回值)。
注意:这里说的参数不是函数也 ==包括没有参数== 的情况!下图说明了这 3 钟情况:
② onRejected
1)当 Promise 变成拒绝状态 ( rejected ) 时调用的函数。该函数有一个参数,即拒绝的原因 (rejection reason)。
2)如果该参数 (指的是 onRejected ) 不是函数,则会在内部被替换为一个 "Thrower" 函数 (it throws an error it received as argument),也就是会报错。
注意:同理,这里说的参数不是函数也 包括没有参数 的情况:
当 Promise 完成 (fulfilled) 或者失败 (rejected) 时,会异步调用返回函数,==返回一个 Promise 对象==,不过返回值与 then() 方法中的回调函数是有关系的,如果then() 的回调函数:
① 没有返回任何值 。那么 then 返回一个接受状态的 Promise ,并且该接受状态回调函数的参数值为 undefined 。
也就是说在处理 then() 返回的 Promise 的回调函数中参数是 undefined ,不理解就看下面的例子:
下面的例子可能对你理解第二句话有帮助 (后面的几种情况都与此类似,都举例说明了):
② 返回一个值 。那么 then 返回一个接受状态的 Promise ,并且将返回的值作为接受状态的回调函数的参数值。
与 ① 情况类似,只是返回的 undefined 变成值
③ 抛出一个错误 。那么 then 返回一个拒绝状态的 Promise ,并且将抛出的错误作为拒绝状态的回调函数的参数值
后面三种是分别返回不同状态的 Promise
④ 返回一个接受状态的 Promise 。那么 then 也会返回一个接受状态的 Promise ,并且将那个 Promise 的接受状态的回调函数的参数值作为该被返回的 Promise 的接受状态回调函数的参数值
⑤ 返回一个拒绝状态的 Promise 。那么 then 也会返回一个拒绝状态的 Promise ,并且将那个 Promise 的拒绝状态的回调函数的参数值作为该被返回的Promise的拒绝状态回调函数的参数值
⑥ 返回一个未定状态 ( pending ) 的 Promise 。那么 then 返回 Promise 的状态也是未定的,并且它的终态与那个 Promise 的终态相同;同时,它变为终态时调用的回调函数参数与那个 Promise 变为终态时的回调函数的参数是相同的
示例中延时返回以得到 pending 状态的 Promise ,立即查看就得到还未有返回值的 pending 状态,2秒钟之后就能看到有返回值的终态
也可以试着用 then() 方法捕捉一下参数:
catch() 方法用来处理 Promise 被拒绝的情况,相当于 then(undefined, onRejected)
catch() 接受一个参数 (回调函数):
① onRejected
1)当 Promise 被 rejected 时调用的函数。 该函数拥有一个参数 reason ( rejection 的原因)
2)如果这个参数 (指的是 onRejected ) 不是函数时,也是会报错的。这与 then() 方法中第二个参数不是函数的情况吻合。
如果 catch() 中的回调函数 抛出一个错误 或返回一个本身失败的 Promise , 则返回一个 rejected 状态的 Promise ;其他情况返回 resolved 状态的 Promise
catch()链式调用参考
Promise to do. Promise doing 什么区别
Promise to do和Promise doing的区别:意思不同、用法不同、侧重点不同
一、意思不同
1.Promise to do意思:承诺做某事;答应去做
2.Promise doing意思:承诺
二、用法不同
1.Promise to do用法:接动词不定式或that引导的从句来充当定语或同位语。
例句:
Don’t worry. I promise to do just as you say.
别担心,我照你说的做就是了。
2.Promise doing用法:可接名词、代词、动词不定式或that从句作宾语,也可接由名词、动词不定式、that从句充当直接宾语的双宾语,其间接宾语可以转换为介词to的宾语。
例句:
We redeem a promise by doing what we said we would.
我们怎么说就怎么做以,履行我们的诺言。
三、侧重点不同
1.Promise to do侧重点:表示客观存在的。
2.Promise doing侧重点:表示抽象的。
promise的用法及作用
promise的用法及作用如下:
promise的用法:promise有两种用法,一是用作动词,意思是允诺、许诺,给人以指望或希望,可用作不及物动词,也可用作及物动词,在用作及物动词时其后可接名词或代词作宾语。二是用作名词,意思是许诺、允诺、希望,是可数名词,复数形式是promises。
一、promise用作名词:promise在用作名词时,是可数名词,基本意思是许诺、允诺、希望,在用法上有时可接动词不定式或that引导的从句来充当定语或同位语。
常见句型:
1、You must promise me to take a thorough rest。
你一定要答应我彻底休息一下。
二、promise用作动词:promise在用作动词时,可用作及物动词和不及物动词,基本意思是允诺、发誓、答应、有希望。
常见句型:
1、I want you to promise me one thing。
我要你答应我一件事。
学习英语的方法
1、制定学习计划:设定明确的学习目标和时间表,并坚持执行。将学习时间分配到不同的技能上,如听、说、读、写,以综合提高英语能力。
2、多听多读:通过大量的听力和阅读练习,培养对英语的感觉和理解。可以听英语音频、看英文电影、听英文歌曲等,提升听力和语感。
3、多说多写:勤于口语和写作练习。可以参加英语角、找语伴进行口语交流,同时积极写作并请教他人修改,提高口语和写作能力。
promise的三种状态
promise的三种状态
Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。
所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。
Promise对象有以下两个特点。
(1)对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和Rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。这也是Promise这个名字的由来,它的英语意思就是“承诺”,表示其他手段无法改变。
(2)一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从Pending变为Resolved和从Pending变为Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。
有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise对象提供统一的接口,使得控制异步操作更加容易。
Promise也有一些缺点。首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。第三,当处于Pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
如果某些事件不断地反复发生,一般来说,使用 Stream 模式是比部署Promise更好的选择。

更多文章:
decorate是什么意思(decorate是什么意思中文翻译)
2026年2月15日 15:15
编程python电脑配置(如何在win7下安装Python及配置)
2025年10月11日 19:30
原生activemq使用(如何使用activemq 管理页面)
2025年6月27日 15:45
connection常用属性(在delphi7中,ADOconnection与ADOQuery都是用来干什么的,有什么联系或者区别吗)
2026年3月25日 08:45
split hairs(don’t split hairs 翻译一下,要直译和引申义)
2026年8月23日 00:45
profitable什么意思(be beneficial for和be profitable for的区别)
2026年1月18日 11:45
switch可以连接笔记本吗(请问switch怎么投屏到笔记本上玩 switch投屏笔记本的操作方法 详细的教程,谢谢!)
2026年8月28日 18:45















