2020/02/10 03-Promise的基本使用

在这里插入图片描述
承诺把事情做完,但是做完成功还是失败,再说,是异步的,concurrent。futures也是异步的,这个工作done了之后就是true了,也有可能失败,最终看结果,异步是给一个值,比如状态给你,你需要频繁查看,这是一种查询的方式,还有一种通知的方式,异步可以给你一个号,好了通知你,或者回调,回调是他操作,而不是你本人操作

promise意思就是异步的去执行你要的工作,直到它算出结果,如果假设有done状态,应该是true和false,成功或者是失败

在JS的回调,往往都是使用回调函数完成的,成功有成功的处理,失败有失败的处理,在promise对象内部有一个对象叫执行器executor,来执行你交代的任务,是一个双参数的,这两个参数是两个函数,由JS注入,你只需要把函数写在这里即可
在这里插入图片描述
executor有两个参数,resolve和reject,一个是解决了,一个是拒绝了,
executor执行器是在promise构造的时候同时执行的,被传递的resolve和reject是可以调用的。(executor函数在promise构造函数返回新间对象前被调用。
函数体是你写的事情,在函数内部调用
executor内部会执行一些异步操作,一旦完成,可以调用resolve函数来将promise状态改成fullfilled即完成,或者在发生错误时将它的状态改为rejected即失败。
promise会立即返回,但是里面的事情会交给executor继续执行。
executor的返回值将被忽略,也就是错了就错 了。
executor中,resolve或reject只能执行其中一个函数

在这里插入图片描述

resolve和reject都是箭头函数,而且是无返回值的,void
在这里插入图片描述
这两个函数是JS帮你注入,你不用管,promise立即返回,里面的executor会继续执行
在这里插入图片描述
可以用延时函数,3秒(3000)执行后是什么样子,调用resolve函数,单参,any是任何类型都可以
在这里插入图片描述
现在的意思是,promise异步执行,里面是一个耗时的工作,应该直接打印下面===,然后三秒后打印p1,5秒之后再看看p1是什么状态
在这里插入图片描述
异步是,直接向下执行,不阻塞。直接给一个中间结果,状态pending,等3秒,外面等5秒,就得到了p1的结果,这就是刚才写的任意值,value在这里插入图片描述
稍微做一下改进,首先一下执行到底,确实是打印了
在这里插入图片描述
resolve完了,reject就不执行了,这两个只能用其中一个
在这里插入图片描述
resolve注释掉,reject就出来了
在这里插入图片描述
没有捕获reject的警告。bad,该打印还是打印了
在这里插入图片描述
这两个只能执行其中一个
在这里插入图片描述
then方法,告诉你里面写两个函数,第一个函数,onfufilled,第二个onbrjected。意思就是当fullfilled怎么做,当rejected怎么做在这里插入图片描述
意思就是如果p1怎么了进行处理
在这里插入图片描述
then传两个参数,要求两个函数,这两个函数要求单参,因为resolve后面这个值是单参的
在这里插入图片描述
当上面有问题的时候才出现2,then函数的调用,就相当于对未来注册了两种状态产生了回调的函数,注册不同状态的回调函数
在这里插入图片描述
当promise,调用了reject,就回调了下面的函数,由P1,promise对象回调的在这里插入图片描述
传一个参数是可以的,只不过没人处理
在这里插入图片描述
1,ok就出来了

在这里插入图片描述

第二个参数reject是可以不写的,因为只关心resolve,不关心reject

在这里插入图片描述
then是做两种状态的函数定义的
在这里插入图片描述
现在resolve的就看不见

在这里插入图片描述
出问题就打印了,catch当条件满足,返回条件是rejected才能用catch

在这里插入图片描述
P1.then是返回一个新的promise对象

在这里插入图片描述
在这里插入图片描述
reject没处理,就打印了
在这里插入图片描述
没有3的事情,也就是在then里就处理掉了,then会返回一个新的promise,这个promise的状态是ok的
在这里插入图片描述
上面生成一个新的promise,到下面继续then,判断它的状态到底ok不ok
在这里插入图片描述
如果是缺省情况下,默认新的promise对象是fulfilled
在这里插入图片描述
前面不管会生成一个新的promise,有异常,状态肯定是reject,就被后面的拿了

在这里插入图片描述
上面fulfilled,就进入4,catch只是为了捕获rejected状态,不管事里面抛出的异常还是fulfilled都不会抓取
在这里插入图片描述
不管事里面抛出的异常还是fulfilled都不会抓取

在这里插入图片描述
首先需要构建一个promise对象,这个promise里需要有一个executor,executor是有两个方法的,这两个方法一个叫resolve,一个叫rejected,在执行的时候,只能执行这两个方法中的其中一个。这两个方法都是单参的,resolve里面叫value,reject错有错的理由,reason在这里插入图片描述
catch只是捕捉rejected状态,then可以写两个参数,可以写一个,一般习惯用then方法处理两个,一个是value,对应 的fulfilled的处理,一个是reason,解决rejected的回调函数。
对于P1来讲,不管返回值是哪种,都有其一,只要有其1执行了,就会返回一个新的promise,新的promise可以继续调用then或者catch,catch只能对这个promise对象进行rejected状态的捕获和回调

每个then和catch会返回一个新的promise,可以做链式编程,可以写一大段代码,前面条件成功往下做,再成功再往下。,可以在里面写函数,处理复杂点
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值