问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JS的Promise兄弟

发布网友 发布时间:2022-08-14 22:15

我来回答

1个回答

热心网友 时间:2024-08-03 03:26

  相信用过JS的都知道JS是单线程的,同步的函数先执行,异步的函数先加入到一个队列中等同步执行完了再执行异步函数。基于这个JS采用异步回调的方式来处理需要等待的事件,是的代码会继续执行而不用在异步处理的地方一直等待着。同时也带来一个不好的方面,如果我们有很多的回调函数, 也就是说一个回调函数里边再嵌套一个回调一层一层的嵌套,这样就很容易进入传说中的回调地狱。

   注意:异步和回调不是一个东西

  下面感受一下回调地狱代码的魅力:

  是挺有美感的但是阅读性很差,写法也让人感到无力,es6新出的promise对象已经es7的async await都可以解决这个问题,但是今天的主角是Promise。

  Promise是异步编程的一种解决方案,可以替代传统的解决方案--回调函数和事件。ES6统一了用法,并原生提供了Promise对象。作为对象,Promise有一下两个特点:(1)对象的状态不受外界影响;(2)一旦状态改变了就不会在变,也就是说任何时候Promise都只有一种状态。Promise有三种状态,分别是:Pending(进行中),Resolved(完成),Rejected (失败)。Promise从Pending状态开始,如果成功就转到成功态,并执行resolve回调函数;如果失败就转到失败状态并执行reject回调函数。

  Promise一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise 对象的状态改变,只有两种可能:从 Pending 变为 Resolved 和从 Pending 变为 Rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果。就算改变已经发生了,你再对 Promise 对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。

  Promise构造函数接收一个函数作为参数,该函数的两个参数是resolve,reject,它们由JavaScript引擎提供。其中resolve函数的作用是当Promise对象转移到成功,调用resolve并将操作结果作为其参数传递出去;reject函数的作用是单Promise对象的状态变为失败时,将操作报出的错误作为其参数传递出去

  介绍一下Promise的api怎么使用:

   1、Promise.resolve()的作用将现有对象转为Promise对象resolved;Promise.resolve('test')==new Promise(resolve=>resolve('test'))

  2、Promise.reject()返回一个Promise对象,状态为rejected

  3、Promise.prototype.then()方法接受两个参数,第一个是成功的resolved的回调,另一个是失败rejected的回调,第二个失败的回调参数可选。并且then方法里也可以返回promise对象,这样就可以链式调用了。

   4、Promise.prototype.catch()发生错误的回调函数。

   5、Promise.all() // 所有的事都有完成,相当于 且,适合用于所有的结果都完成了才去执行then()成功的操作。

   6、Promise.race() // 完成一个任务即可,相当于 或。(这个经常用在一些图片比较多的网站)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
灵显的意思是什么 安国药王庙结构 显灵宫建筑构造 煤炭储量储量计算 大容量塑料水杯可以用开水烫吗 大容量塑料水杯能不能用开水烫 辽宁朝阳一日游去哪里比较好 ...电脑打开后出现一个对话框影响正常开机不知道怎样解决 哪些可以关掉,这些英文是什么意思? 企业应对网络舆情攻略:10个危机公关应对策略,有效解决 兔宝宝石氏名字寓意好字 为什么换了之后登不上- 问一问 60的空气炸锅用多大的吸纸 河南机动车国四排放时间 女士用酒红色包好还是黑色 夏天快到了,我想买个包,看到这款酒红色的包包,是斜垮的,我穿的衣服是... 依视路1.74是什么意思 1.74镜片损害眼睛么 大学期间的纪律处分,具体都分为哪些 最贵的蛋是笨蛋读了课文,你最想说什么?把你想说的话写下来。 我梦见我自己会飞,然后在拜佛。是在半空中拜的。有什么原因么。中间有... 内热肝火旺吃六味地黄丸上火怎么办 吃了六味地黄丸超级上火!!!帮我看看这是怎么回事?高分悬赏!!!_百度... ...关物质用途中利用其化学性质的是a干冰用作冷冻剂b氮气用作食品包装的... CO2做制冷剂是利用了它的什么性质 干冰用作冷冻剂是物理性质吗 北京话抻着是什么意思 道家弟子的禁忌 道家弟子的禁忌是什么 2021年1月起开始实施什么新规? 这些2021年1月起实施的新规定,你知道几个? 李春平和美国哪个明星结婚了 有关于名人从师的故事 怎么去除酒店异味?刚装修的酒店,很多气味都混在一起,怎样有效快速的去除... 名人拜师的故事有哪些 名人拜师的故事有哪些?要简洁 吡咯的读音是什么 pureQQ是什么 PQQ发酵单位最高有多少 促使辛亥革命发生的国际国内因素有哪些 昨晚梦到我和老公跟一只黑狗搏斗 梦见狗咬自己对象是什么意思 乡下人家五年级作文 作文:乡下人家的冬天。‘ 你好!天翼宽带复位了怎么重新设置呢?我弄了好多次都还是不能上网_百度... 2022年下半年食用油会涨价吗? 2022年3月9号食用油是涨还是跌? 2022年有必要囤食用油吗 qq空间要几级才能免费换靓照(个人形象)?空间如何用代码装饰? word打不开 应用程序错误 提示应用程序初始化(0xc150002)失败 该怎么... 为什么word和一些软件打不开,提示“应用程序正常初始化0xc0150004失败... word应用程序正常初始化(Oxc0150002)失败