保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

JS的Promise兄弟

  一,认识Promise
  相信用过JS的都知道JS是单线程的,同步的函数先执行,异步的函数先加入到一个队列中等同步执行完了再执行异步函数。基于这个JS采用异步回调的方式来处理需要等待的事件,是的代码会继续执行而不用在异步处理的地方一直等待着。同时也带来一个不好的方面,如果我们有很多的回调函数,也就是说一个回调函数里边再嵌套一个回调一层一层的嵌套,这样就很容易进入传说中的回调地狱。
  注意:异步和回调不是一个东西
  下面感受一下回调地狱代码的魅力:1async(1,function(value){2async(value,function(value){3async(value,function(value){4async(value,function(value){5async(value,function(value){6async(value,final);7});8});9});10});11});
  是挺有美感的但是阅读性很差,写法也让人感到无力,es6新出的promise对象已经es7的asyncawait都可以解决这个问题,但是今天的主角是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
  Promise构造函数接收一个函数作为参数,该函数的两个参数是resolve,reject,它们由JavaScript引擎提供。其中resolve函数的作用是当Promise对象转移到成功,调用resolve并将操作结果作为其参数传递出去;reject函数的作用是单Promise对象的状态变为失败时,将操作报出的错误作为其参数传递出去
  介绍一下Promise的api怎么使用:
  1、Promise。resolve()的作用将现有对象转为Promise对象resolved;Promise。resolve(test)newPromise(resolveresolve(test))
  2、Promise。reject()返回一个Promise对象,状态为rejected
  3、Promise。prototype。then()方法接受两个参数,第一个是成功的resolved的回调,另一个是失败rejected的回调,第二个失败的回调参数可选。并且then方法里也可以返回promise对象,这样就可以链式调用了。1functionjudgeNumber(num){2varpromise1newPromise(function(resolve,reject){3num5;4if(num5){5resolve(num小于5,值为:num);6}else{7reject(num不小于5,值为:num);8}9});10returnpromise1;11}1213judgeNumber()。then(14function(message){15console。log(message);16},17function(message){18console。log(message);19}20)包含有两个方法,前一个执行resolve回调的参数,后一个执行reject回调的参数。
  4、Promise。prototype。catch()发生错误的回调函数。1functionjudgeNumber(num){2varpromise1newPromise(function(resolve,reject){3num5;4if(num5){5resolve(num小于5,值为:num);6}else{7reject(num不小于5,值为:num);8}9});10returnpromise1;11}1213judgeNumber()。then(14function(message){15console。log(message);16}17)18。catch(function(message){19console。log(message);20})这个时候catch执行的是和reject一样的,也就是说如果Promise的状态变为reject时,会被catch捕捉到,不过需要特别注意的是如果前面设置了reject方法的回调函数,则catch不会捕捉到状态变为reject的情况。catch还有一点不同的是,如果在resolve或者reject发生错误的时候,会被catch捕捉到,这与java,c的错误处理时一样的,这样就能避免程序卡死在回调函数中了。
  5、Promise。all()所有的事都有完成,相当于且,适合用于所有的结果都完成了才去执行then()成功的操作。1letp1newPromise(function(resolve,reject){2resolve(1);3});4letp2newPromise(function(resolve,reject){5resolve(2);6});7letp3newPromise(function(resolve,reject){8resolve(3);9});10Promise。all(〔p1,p2,p3〕)。then(function(results){11console。log(success:results);success:1,2,312})。catch(function(r){13console。log(error);14console。log(r);15});
  6、Promise。race()完成一个任务即可,相当于或。(这个经常用在一些图片比较多的网站)1模拟请求某个图片资源2functionrequestImg(){3varpnewPromise(function(resolve,reject){4varimgnewImage();5img。onloadfunction(){6resolve(img);7}8img。srcyingaxiang;9});10returnp;11}1213延时函数,用于给请求计时14functiontimeout(){15varpnewPromise(function(resolve,reject){16setTimeout(function(){17reject(图片请求超时);18},5000);19});20returnp;21}2223Promise24。race(〔requestImg(),timeout()〕)25。then(function(results){26console。log(results);27})28。catch(function(reason){29console。log(reason);30});这样就相当于requestImg方法与timeout方法的龟兔赛跑,如果五秒内图片请求成功了那么就会进入。then中,如果五秒内请求图片不成功则将进入。catch中提示请求超时PromiseAjax1functionajax(URL){2returnnewPromise(function(resolve,reject){3varreqnewXMLHttpRequest();4req。open(GET,URL,true);5req。onloadfunction(){6if(req。status200){7resolve(req。responseText);8}else{9reject(newError(req。statusText));10}11};12req。onerrorfunction(){13reject(newError(req。statusText));14};15req。send();16});17}18varURLhttps:www。cnblogs。comyingaxiang;19ajax(URL)。then(functiononFulfilled(value){20document。write(内容是:value);21})。catch(functiononRejected(error){22document。write(错误:error);23});

表现自己题目:爱表现自己是人的天性。恩格斯说:发展和表现自己是生活的基本需要之一。于光远先生承认自己是个二表人才,即:爱表现自己和爱受表扬。他认为,只要表现自己的东西是真实的,受……人工智能不懈追求人脑级别的性能人工智能(AI)的首要发展途径将逐渐转向(回到)人工智能增强硬件并且不会只有处理器受到影响。这就好比刚诞生的互联网和以前的铁路热潮一样最开始,人们欢欣鼓舞,许多小公司都在谋求成……多彩的梦想作文多彩的梦想作文1一天晚上,一片嫩绿的小树叶儿望着满天的繁星说话了,它对妈妈说:有一天,我会随风飘动,飘到小溪上好好的睡上一觉。有一天,我会随风飘动,飘到小蚂蚁头顶上……时间金钱时间与金钱,一对复杂的等式关系,如果用在今天,我算是明白了。时间不等于金钱,金钱却和时间成反比,时间越少,所花的金钱有时就越多,不管你身在何处并做什么hellip;hellip……中国科学报打造巡天望远镜成像探测器测试平台中国科学技术大学核探测与核电子学国家重点实验室研究员王坚团队设计完成了一种用于测试宇宙深处微弱光信号的科学级电荷耦合器件(CCD)探测器的验证平台,为大视场巡天望远镜主焦相机的……介绍朋友高中英语作文朋友,在我们的生活中是必不可少的。下面,品学网小编为你整理了介绍朋友高中英语作文,希望对你有帮助!介绍朋友高中英语作文篇1Ihaveaverygoodfriend。……有关小学四年级的数学日记数学是一门工具学科,很多问题的解决都依赖于数学的知识,下面小编带来的是有关小学四年级的数学日记,希望对你有帮助。有关小学四年级的数学日记1今天,我高兴的在家里看着我的《聪……知乎与中国计算机学会联合推出科盐面对面科普节目从下棋到面部识别,AI对当今科技、生活的影响被大家熟知,仅在知乎上,人工智能相关话题就有约200万人关注,而在生物信息学,尤其是新冠疫情中,AI也有着重大意义。近日,知乎……马斯克放弃推特董事席位【侨报综合报道】推特CEO帕拉格阿格拉瓦尔周日表示,埃隆马斯克拒绝加入董事会这一提议,他还警告称:前方有很多干扰因素。阿格拉瓦尔在推特上发布公告称,公司董事会此前与马斯克……阴暗阴暗社会有阴暗的一面,也有光明的一面,我只看到令人作呕的阴暗的一面。人人称赞的大善人背后是不堪的私生活,前一秒对你笑脸相迎的人下一秒对你避如蛇蝎,有手有脚的年轻人却……老鹰捉小鸡五年级作文范文这几天一直在家里写作业,没有时间下去玩,感觉好闷现在终于完成作业,这下可以好好的玩啦!老师有说过人要经常运动,否则会对身体不好的生命在于运动这时有个小朋友叫我到楼下去玩老……推荐春天充满希望作文400字4篇无论是在学校还是在社会中,大家都有写作文的经历,对作文很是熟悉吧,作文一定要做到主题集中,围绕同一主题作深入阐述,切忌东拉西扯,主题涣散甚至无主题。你知道作文怎样写才规范吗?以……
描写我的老师五年级作文在我身边,在学校里,到处都有好老师。他们认真负责,伟大无私,像辛勤的园丁,用自己的心血,精心地浇灌着花朵;老师是我们的引路人,下面给大家分享我的老师作文,欢迎借鉴!【第1篇:我……难忘的春节作文春节,又叫阴历年,俗称过年。这是我国民间最隆重、最热闹的一个传统节日,也是中国人所独有的节日,是中华文明最集中的表现。在这个喜庆的节日里,有许多习俗:如放鞭炮、拜年、吃年饭、贴……日英就合作构建安全通信网达成共识共同社5月2日报道,日本总务大臣金子恭之4月29日在出访地伦敦,与英国主管数字化事务的国务大臣洛佩兹(JuliaLopez)举行会谈,就日英两国政府为构建安全且信赖度高的第五代……58同城以技术和服务赋能招聘行业湖北万家民企集中释放10万岗湖北万家民企助就业大学生专场招聘动员大会日前召开,1。2万余家民营企业集中释放招聘岗位10万余个。面对严峻的就业形势,58同城积极履行平台社会责任,创新开发出一系列在线智能招聘……老人88岁了经常打岔,和他讲话还需要很大声,助听器有用吗?只要还有残余听力助听器一般都是有效果的还是建议老人亲自去检测听力试听一下看看具体效果因为具体效果和老人的言语识别率是有很大的关系的建议带老人去验配中心检查、体验。如……春天的脚步近了小学生记事作文不知细叶谁裁出,二月春风似剪刀是啊,正如诗中描写的那样,柳树已渐渐的换上绿衣,由春风这位绝顶的设计师为其迎接春的到来细心的进行裁剪,春天的脚步,近了。跟随春风的脚步。我们也踏上……爸爸妈妈我想对您们说作文500字爸爸妈妈:你们好!今天,我坐在桌前写这封信时,我很快乐。一眨眼,我已经14岁了,我感谢你们在以往的14年岁月里对我的照顾。我知道,你们爱我,当然我也爱你们。也……朋友小学作文200字朋友朋友对于我们每一个人都有着不同的意义,有朋友同行是一种安慰,有朋友鼓励是一种力量,有朋友帮助是一种温暧,有朋友忠告是一种激励,有朋友惦记是一种幸福,而在我们的一生中会……啊,雪的作文200字下午妈妈回家来,告诉我和弟弟:下雪了!什么?我和弟弟惊异地异口同声。刹那间,立刻奔出屋门。啊,真下雪了!多美的雪啊!我和弟弟在院子里尽情蹦跳、转圈。我停下来,仔细观赏着雪……人人都该掌握的电脑小技巧,建议收藏LINA一,巧解任何电脑的开机密码小小一招巧解任何电脑的开机密码,无需任何工具,无需放电,任何电脑当开机需要密码时,只需将机箱打开,把里面的声卡或其它任何一个零件拔下来,……不断追求永不满足作文有人曾说,努力奋斗,不断拼搏的人生目标是获得成功,满足自我,满足了就是幸福的。但我并不这么认为,因为满足意味着止步不前,拘于现状而无法自拔。满足就像一条受伤的腿,拖住你超越自我……有谁知道现在的老年机,什么品牌的比较好用?内存大一点,通话声音大,来电铃声大的品牌,在拼多多上百亿补贴上有一款手机还是相当不错的,这就是中兴守护宝,双4G内存是8到128G的手机,带有高清语言功能,有定位功能,没有OT……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网