当前位置: 首页 > 网络应用技术

一篇文章了解承诺及其采访小练习

时间:2023-03-08 01:45:39 网络应用技术

  Promise是ES6提出了一种新的语法,以优化异步代码编写。

  承诺:应许

  主要内容简介

  专注于解决回调地狱问题

  背景接口

  前台代码

  承诺意味着承诺,ES6提出了新的API。

  用于优化异步代码。它的经典使用方法如下

  关键点:

  承诺对象的状态可能如下:,,,。以下是单独引入的。

  初始待处理。它的意思是“要确定,并且会发生,这等同于初始状态。创建承诺对象时,它不会调用解决方案或拒绝,这等同于初始状态。此初始状态将切换在调用解决方案或拒绝功能时,到另一个状态。

  这种初始状态是您向他人保证的那一刻。目前,每个人都不知道是否可以实现这一诺言。

  成功也称为实现。

  解决。这意味着实现这一承诺。要实现从待处理到解决的转变,在创建承诺对象时,在函数体中调用了分辨率方法(即第一个参数)。

  请注意,上述分辨率和拒绝只是样本。

  失败拒绝重新注射,拒绝,失败。这意味着该诺言尚未做出和失败。要实现从悬而未决到拒绝的转换,只需在创建承诺对象时调用拒绝函数即可。

  当三个状态摘要最初是由Promise对象创建的时,默认状态正在等待。如果在函数主体内调用与第一个参数相对应的函数,则状态将变为一个分辨率。

  一旦待解决--->解决(或拒绝),就不可能再返回审理了,也无法将其从解决方案更改为拒绝。

  承诺是值得的,除了国家以及PromiseValue外,在构造函数中,在调用解决方案和拒绝方法时将传递该值。

  例如:

  在构造函数的函数中,一旦状态更改,然后或在捕获中,同时,PromiseValue将传递到相应的函数中。

  具体来说:

  根据实际情况的需求,您无法最终添加()。

  下面我们返回一个具体问题:如何通过回调函数重写现有代码,以实现异步操作的代码。

  步骤1:建立一个模板。此处的模板是指固定的例程:编写一个空功能,在功能正文中创建Promise对象并返回。

  当然,如果您使用箭头功能,也可以简化。

  步骤2:将异步函数写入构造函数,并决定是否调用Resolve,拒绝。

  步骤3:调用函数。通过结构来键入此函数。

  撰写原始背部调整功能

  重写后

  掌握当时方法的使用;

  当时方法的作用是添加恢复功能时,将状态更改添加到承诺对象中。

  以下是从呼叫格式的三个方面,执行逻辑和返回值引入的

  它有两个参数,每个参数是一个函数。第二个参数是可选的。

  如下:

  它的两个参数都是函数。

  第二个参数是可选的。如果仅编写一个参数,则如下:

  以以下代码为例

  它的两个参数都是函数,其执行逻辑是:

  示例代码1

  执行输出的结果是:

  示例代码2

  执行输出的结果是:

  tht()方法的返回值也是一个承诺对象,因此它支持链写作,但应注意,其返回值是一个新的Promise对象,而不是与调用THET方法的对象相同。

  查看以下代码:

  由于上面的代码可以解释p1.then()的结果()与p1的承诺对象不同,因此()将封装一个新的Promise对象P2。由于P2也是一个承诺对象,P2的状态是什么(Promisestatus)和PromiseValue?

  P2和PromiseValue的状态根据以下规则确定以确定

  简单的小练习1

  简单的小练习2

  特殊,如果在f_ok()中没有返回语句,则返回未定义是等效的。

  简单的小练习3

  简单的小练习4

  简单的小练习5

  简单的小练习6

  捕获是当时的别名(null,拒绝)

  Promise.Prototype.CATCH是Promise.prototype.then(null,recubs)的别名,用于指定承诺对象的状态,从待处理到拒绝的恢复功能。

  单独使用捕获量并没有多大意义,通常与当时使用。如下:

  捕获的返回值仍然是一个承诺对象,它与其价值的价值的方式一致。

  链电话:$()。attr()。val()

  p.then()。然后 ()。然后 () ...

  代码

  结果输出是:

  分析

  步骤1:因为在P.Then(DO1)中解决了P的状态,因此执行DO1函数。

  步骤2:确定p1的状态。根据当时的上一部分的引入,p1的状态由do1()确定,因为do1并未清楚地指定>返回值,返回值是未定义的状态。P1已解决。

  步骤3:由于已解决了P1状态,因此P1。然后(DO2)继续执行do2.output,并且P2的状态由DO2确定。。

  步骤4:接下来,查看p3。由于解决了P2的状态,P2。

  最后:p3。

  var p =新的承诺

  如下分析:

  步骤1:因为在P.Then(DO1)中解决了P的状态,因此执行DO1函数。

  步骤2:确定p1的状态。根据当时的上一部分的引入,p1的状态由do1()确定,因为do1并未清楚地指定返回值,返回值是未定义的状态。P1已解决。

  步骤3:由于已解决了P1状态,因此P1。然后(DO2)继续执行do2.output,并且P2的状态由DO2确定。。

  步骤4:接下来,查看P3。由于已解决了P2的状态,因此无法执行DO3。P3的状态没有改变。它仍然保持P2的状态:已解决。

  最后:p3。

  上述代码的执行结果是:.LET首先分解该过程,添加一些中间变量来描述其值:

  如下分析:

  步骤1:因为在P.Then(DO1)中解决了P的状态,因此DO1函数将执行和输出。同时,由于这里有错误代码的部分,因此P1的状态是拒绝。

  步骤2:由于P1的状态被拒绝,因此P1。然后(DO2)不会执行DO2,并且P2的状态也被拒绝。

  步骤3:P3的分析是相同的。

  步骤4:P3的状态被拒绝,因此DO4将被执行。

  上述代码的输出结果为4。

  分析分析后,分析如下:

  填写代码并完成指定功能。

  目的是使睡眠的功能像settimeout一样:在执行遵循操作之前等待2000毫秒。

  参考代码如下:

  背景接口

  前端代码

  异步,等待是ES7中的一种新语法,用于进一步改善异步代码。这是Promise的升级版本!

  该功能返回承诺对象。

  函数内部语句返回的值是承诺对象的值

  等待的外部功能必须具有异步。

  在正常情况下,命令背后有一个承诺对象并返回承诺的值。如果不是承诺对象,请直接返回相应的值。

  执行异步函数(名为asyncf)时,在内部输入该函数:

  继续执行以下-UP代码。等待后执行异步代码后,然后在asyncf中执行以下代码。

  执行结果是:

  输出结果