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

2025-09-13 16:45:02 :0

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

这篇文章给大家聊聊关于promise的各种形式,以及深入理解 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更好的选择。

OK,关于promise的各种形式和深入理解 promise:promise的三种状态与链式调用的内容到此结束了,希望对大家有所帮助。

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

本文编辑:admin

更多文章:


lua脚本怎么用(安卓手机怎么打开.lua的脚本)

lua脚本怎么用(安卓手机怎么打开.lua的脚本)

各位老铁们,大家好,今天由我来为大家分享lua脚本怎么用,以及安卓手机怎么打开.lua的脚本的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录安卓手机

2025年8月2日 08:15

什么是IDE,java开发的ide是什么?id是什么意思

什么是IDE,java开发的ide是什么?id是什么意思

其实ide的问题并不复杂,但是又很多的朋友都不太了解什么是IDE,java开发的ide是什么,因此呢,今天小编就来为大家分享ide的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录什么是IDE,java开发的ide

2025年10月4日 13:00

decorate是什么意思(decorate是什么意思中文翻译)

decorate是什么意思(decorate是什么意思中文翻译)

这篇文章给大家聊聊关于decorate是什么意思,以及decorate是什么意思中文翻译对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录decorate是什么意思中文翻译decorate是什么牌子decorate是什么意思de

2026年2月15日 15:15

编程python电脑配置(如何在win7下安装Python及配置)

编程python电脑配置(如何在win7下安装Python及配置)

各位老铁们,大家好,今天由我来为大家分享编程python电脑配置,以及如何在win7下安装Python及配置的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2025年10月11日 19:30

模块层次结构?模块结构图是什么阶段的结果

模块层次结构?模块结构图是什么阶段的结果

大家好,如果您还对模块结构图不太了解,没有关系,今天就由本站为大家分享模块结构图的知识,包括模块层次结构的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录模块层次结构模块结构图是什么阶段的结果层次方框图与功能模块图有

2025年8月14日 10:30

原生activemq使用(如何使用activemq 管理页面)

原生activemq使用(如何使用activemq 管理页面)

其实原生activemq使用的问题并不复杂,但是又很多的朋友都不太了解如何使用activemq 管理页面,因此呢,今天小编就来为大家分享原生activemq使用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录如何

2025年6月27日 15:45

网络七层模型顺口溜(osi的七层模型是哪七层)

网络七层模型顺口溜(osi的七层模型是哪七层)

其实网络七层模型顺口溜的问题并不复杂,但是又很多的朋友都不太了解osi的七层模型是哪七层,因此呢,今天小编就来为大家分享网络七层模型顺口溜的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录osi的七层模型是哪七层七

2026年9月8日 23:45

delete拆字记忆(在百度搜索后,那个记忆的词怎么删啊)

delete拆字记忆(在百度搜索后,那个记忆的词怎么删啊)

各位老铁们,大家好,今天由我来为大家分享delete拆字记忆,以及在百度搜索后,那个记忆的词怎么删啊的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录

2026年4月11日 10:00

connection常用属性(在delphi7中,ADOconnection与ADOQuery都是用来干什么的,有什么联系或者区别吗)

connection常用属性(在delphi7中,ADOconnection与ADOQuery都是用来干什么的,有什么联系或者区别吗)

大家好,connection常用属性相信很多的网友都不是很明白,包括在delphi7中,ADOconnection与ADOQuery都是用来干什么的,有什么联系或者区别吗也是一样,不过没有关系,接下来就来为大家分享关于connection常

2026年3月25日 08:45

cssfloat教(css中“float”是什么意思)

cssfloat教(css中“float”是什么意思)

“cssfloat教”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看cssfloat教(css中“float”是什么意思)!本文目录css中“float”是什么意思CSS float浮动布局css中的float是怎么回事Cs

2025年5月27日 01:45

手机下拉菜单不见了(为什么我的下拉菜单没了)

手机下拉菜单不见了(为什么我的下拉菜单没了)

“手机下拉菜单不见了”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看手机下拉菜单不见了(为什么我的下拉菜单没了)!本文目录为什么我的下拉菜单没了华为mate30pro下拉菜单不见了怎么办手机下拉菜单隐藏了,怎么调出来啊为什么

2025年12月23日 06:00

进制转换方法带小数(二进制(带小数)转八进制方法.)

进制转换方法带小数(二进制(带小数)转八进制方法.)

本篇文章给大家谈谈进制转换方法带小数,以及二进制(带小数)转八进制方法.对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录二进制(带小数)转八进制方法.小数的进制转换小数的进制转换方法二进制十进制间小数怎么转换带小数点的十进制如

2025年8月27日 13:30

随机数字表是唯一的吗(随机文件的记录号唯一吗)

随机数字表是唯一的吗(随机文件的记录号唯一吗)

其实随机数字表是唯一的吗的问题并不复杂,但是又很多的朋友都不太了解随机文件的记录号唯一吗,因此呢,今天小编就来为大家分享随机数字表是唯一的吗的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录随机文件的记录号唯一吗数

2025年11月16日 06:30

ami是什么期刊(cssci和ami哪个好)

ami是什么期刊(cssci和ami哪个好)

本篇文章给大家谈谈ami是什么期刊,以及cssci和ami哪个好对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录cssci和ami哪个好ami核心期刊全文收录期刊是什么意思北大核心ami扩展是什么意思古今农业ami扩展是核心吗

2025年11月23日 19:30

split hairs(don’t split hairs 翻译一下,要直译和引申义)

split hairs(don’t split hairs 翻译一下,要直译和引申义)

其实split hairs的问题并不复杂,但是又很多的朋友都不太了解don’t split hairs 翻译一下,要直译和引申义,因此呢,今天小编就来为大家分享split hairs的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题

2026年8月23日 00:45

washesclothes翻译(洗衣服英语两种表达)

washesclothes翻译(洗衣服英语两种表达)

今天给各位分享洗衣服英语两种表达的知识,其中也会对洗衣服英语两种表达进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录洗衣服英语两种表达washes clothes是什么意思wash clothes英语怎么说洗衣

2026年2月28日 09:30

profitable什么意思(be beneficial for和be profitable for的区别)

profitable什么意思(be beneficial for和be profitable for的区别)

其实profitable什么意思的问题并不复杂,但是又很多的朋友都不太了解be beneficial for和be profitable for的区别,因此呢,今天小编就来为大家分享profitable什么意思的一些知识,希望可以帮助到大家

2026年1月18日 11:45

switch可以连接笔记本吗(请问switch怎么投屏到笔记本上玩 switch投屏笔记本的操作方法 详细的教程,谢谢!)

switch可以连接笔记本吗(请问switch怎么投屏到笔记本上玩 switch投屏笔记本的操作方法 详细的教程,谢谢!)

其实switch可以连接笔记本吗的问题并不复杂,但是又很多的朋友都不太了解请问switch怎么投屏到笔记本上玩 switch投屏笔记本的操作方法 详细的教程,谢谢!,因此呢,今天小编就来为大家分享switch可以连接笔记本吗的一些知识,希望

2026年8月28日 18:45

html是一种编程语言吗?(html不是编程语言什么梗)

html是一种编程语言吗?(html不是编程语言什么梗)

大家好,如果您还对html是一种编程语言吗?不太了解,没有关系,今天就由本站为大家分享html是一种编程语言吗?的知识,包括html不是编程语言什么梗的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录html不是编程

2025年6月16日 08:00

哪里可以下载免费的编程(请问怎样下载plc编程软件)

哪里可以下载免费的编程(请问怎样下载plc编程软件)

大家好,哪里可以下载免费的编程相信很多的网友都不是很明白,包括请问怎样下载plc编程软件也是一样,不过没有关系,接下来就来为大家分享关于哪里可以下载免费的编程和请问怎样下载plc编程软件的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

2025年8月1日 06:15

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索