当前位置:首页 > 财经

then的用法 菜鸟丨Promise的用法讲解

Promise是一个构造函数,它有自己的方法如resolve reject all,原型有方法如then catch。

本文将重点关注以下内容:

1、使用解析和拒绝。

2.所有的用法。

3.重点是当时的使用。

本教程中使用的引擎版本:5.2.13

本教程来源链接:https://github.com/shenysun/PromiseCourse

本教程参考:

【ES6承诺用法说明】

http://www.cnblogs.com/whybxy/p/7645578.html

1、最简单的承诺

让任意_1 =新承诺((解决,拒绝)= >;{

setTimeout(()= >;{

console . log(" 1s后,开始执行");

解决(“承诺完成”)

}, 1000);

})

/**

*创建新的承诺。

* @param executor用于初始化承诺的回调。这个回调传递了两个参数:

*一个解析回调,用于解析带有值的承诺或另一个承诺的结果,

*以及拒绝回拨,用于拒绝承诺并提供原因或错误。

*/

新<。T>。(执行者:(解析:(值?:T | PromiseLike & ltT>。)= >;无效,拒绝:(原因?:any)= > gt。void) =>。无效):承诺& ltT>。;

Promise的构造函数接收一个函数的参数,这个函数有两个参数:resolve和reject,分别代表一步操作执行成功和异步执行失败后的回调函数。

运行以上代码是显而易见的。一秒钟后,将执行“1s后开始执行”,并调用解析方法。

到了这里,很多人会开始怀疑这个决议是什么,没用没执行。

2.决心的使用

上述解析和拒绝分别代表一步操作成功和异步执行失败后的回调函数。那么在Promise函数完成后,如何让这两个函数执行呢?

执行以下代码:

让任意_1 =新承诺((解决,拒绝)= >;{

setTimeout(()= >;{

console . log(" 1s后执行");

解决(“承诺完成”)

}, 1000);

})

any_1 .然后((data)= >{

console.log(数据);

})

控制台日志:

Promise对象调用then方法,然后接收一个函数参数,并获取Promise成功回调解析函数的参数。无极就是这么做的。简单来说就是可以把原来的回调编写分开,异步操作完成后通过链式调用执行回调函数。

3.连锁经营的使用

从表面上看,Promise与普通回调函数相比,可以简化逐层回调的编写。Promise的本质是“状态”,它通过维护和转移状态来及时调用回调函数。这比传递回调函数要简单和灵活得多。

让我们看一段代码:

/* *按顺序履行承诺*/

private orderGo() {

this.firPromise()。然后((数据)= gt;{

console.log(数据);

return this . secpromise();

})

。然后((数据)= gt;{

console.log(数据);

return this . third compromise();

})

。然后((数据)= gt;{

console.log(数据);

控制台日志(“三次执行完成”);

})

}

根据该序列,每隔一段时间执行一次异步回调,在下一个then方法中可以获得在firPromise方法中发送来解析的数据,并运行以下结果:

5.所有的用法

Promise的all提供了并行执行异步操作的能力,并且在所有异步操作执行完毕之前不会执行回调。仍然使用上面的前三种方法,所有的用法如下:

// -所有用法

promise . all([this . firspromise()、this.secPromise()、this.thirdPromise()])

。然后((数据)= gt;{

console.log(数据);

})

// -所有用法

运行结果:

all方法并行执行三个Promise对象,并将所有异步执行结果发送到数组中的then,即上面的数据。

6.实际开发中的使用

我们先来看看getResByUrl的使用,这是白鹭上常用的方法:

RES . getresby URl(" resource/assets/egret _ icon . png "/>

关于下面的另一个例子,请参考Nasus

创建5 * 5对象,依次异步执行一系列操作,效果如下。

下一个操作只能在这次执行完所有操作后才能开始。使用补间第三方库,源代码如下:

private orderTW() {

for(设I = 0;i <。5;i++) {

for(设j = 0;j <。5;j++) {

让地图:白鹭。位图=新白鹭。位图(RES . getres(" egret _ icon _ png ");

map . anchoroffsetx = map . width/2;

map . anchoroffsety = map . height/2;

map . x = map . width * j;

map . y = map . height * I;

这个。_layer.addChild(地图);

这个。_layer.x =白鹭。main context . instance . stage . stage width/2-this。_ layer . width/2;

这个。_layer.y =白鹭。main context . instance . stage . stage height/2-this。_ layer . height/2;

}

}

//当前下标

let index:number = 0;

//执行行动的承诺

让twPromise = () = >{

Console.log (` executed ${index}次');

返回新承诺((解决1,拒绝)= >;{

白鹭。Tween.get(this。_layer.getChildAt(index))。至({

旋转:30°

}, 400).至({

旋转:-30°

}, 400).至({

alpha: 0

}, 200).呼叫(()= >;{

resolve 1(index++);

})

})

}

//切换对象的承诺

让orderPromise = () = >{

返回新承诺((解决2,拒绝)= >;{

twPromise()。然后(()= >;{

if(索引& lt这个。_ layer . NumChildren)resolve 2(OrderPromise())

Else resolve2(“执行完毕”)

})

})

}

order promise();

}

定义了两种承诺方法,即补间动画的承诺方法和执行承诺方法的订单承诺方法。orderPromise在初始时执行,这个方法将调用two promise方法,然后调用two promise的方法,其中two promise方法将调用index++。也就是说,一个对象执行了一系列的补间动画后,切换到下一个对象,然后通过resolve2(orderPromise())完成整个过程。

总结

在本教程中,我们从开始到完成一个简单的演示学习了Promise的用法。如果有兴趣,还可以学习catch race的用法。通过本教程,您可以学习以下知识点:

什么是承诺

承诺、解决和拒绝两个常用功能的使用

连锁经营的使用和所有

以上是Promise主要用法的详细说明,希望对开发者有所帮助。如果您有任何意见或建议,请留言与我们讨论。

1.《then的用法 菜鸟丨Promise的用法讲解》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《then的用法 菜鸟丨Promise的用法讲解》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/1038918.html

上一篇

热干面英文名出炉 事件的真相是什么?

下一篇

网易网盘关闭入口 过程真相详细揭秘!

合金分析 手持式合金分析仪的使用方法

  • 合金分析 手持式合金分析仪的使用方法
  • 合金分析 手持式合金分析仪的使用方法
  • 合金分析 手持式合金分析仪的使用方法

怎么消除脸上的法令纹 怎样消除法令纹?去除法令纹的最全方法在这里!25-40岁必看...

数据库管理软件 几款可定制管理软件开发平台对比

数据库管理软件 几款可定制管理软件开发平台对比

选择管理软件通常有几种方案: 第一,请定制软件公司的开发。这种方法成本高,开发周期长,后续的功能调整,有时甚至添加或修改一个字段,都要依靠软件公司,额外付费。因此,这种方法通常适用于较大的公司或机构; 第二,招程序员自己开发。优点在于需求明确,需求沟通的步骤减少,成本相对较低,缺点也很明显,...

1pb硬盘 数据存储之争:固态硬盘 vs. 机械硬盘

基于闪存的固态硬盘(SSD)和机械硬盘(HDD)之间的市场份额竞争非常类似于物理冲突,因此可以应用相同的语言。它的竞争基本是在市场上,结果是由谁拥有更多的市场决定的。物流链和技术领导者通常决定结果,拥有资源优势始终是保持市场优势的主要因素。 人们经常看到SSD和HDD的竞争被描绘成一个阴云密...

琼斯 专题 | 数据告诉你,“骨头大魔王”究竟有多可怕!

deceased 西班牙新数据保护法要点简介

新的《西班牙数据保护法》(第3/2018号组织法)的要点 西班牙新数据保护法要点简介 新的《西班牙数据保护法》(第3/2018号组织法)已经公布,并自2018年12月7日起生效。除了适用于在西班牙运营的公司的欧盟一般数据保护条例(“GDPR”)之外,我们还包括要求的7个重点。 新的西班牙数据...

裹是什么结构 什么是大数据的结构化、非结构化、半结构化及多结构化?

  • 裹是什么结构 什么是大数据的结构化、非结构化、半结构化及多结构化?
  • 裹是什么结构 什么是大数据的结构化、非结构化、半结构化及多结构化?
  • 裹是什么结构 什么是大数据的结构化、非结构化、半结构化及多结构化?

武汉调整确诊病亡人员数据 到底是什么状况?

新华社武汉4月17日电武汉市新冠肺炎疫情防控指挥部17日发布《关于纠正武汉市新冠肺炎确诊病例数的通知》。全文如下:根据《中华人民共和国传染病防治法》第三十八条第四款“传染病疫情信息发布应当及时、准确”,《突发公共卫生事件应...