00:00
好,那再来再来看一下,那咱们这一块呢,我们该怎么去设计这个功能呢。他呢,要的步骤呢有很多是不是,那我该怎么做呢,每一步我该。是不是要去定义一些东西,去想办法把它实现掉啊,是不是,你看比方说我这是不是读取文件,那么我对应的,我要去对应一个什么呢。诶,我是不是要定一个方法,因为这个方法方便我今后去复用,我定一个方法,这个方法呢,专门去读取我这个本地的SN,那今后呢,是不是可以去复用这个方法去读取它了,所以说这样呢,我可能会定义一个方法叫做read比read saysn好,Read s是用这样的方法是不是好,接下来呢,再向往下走,读取之后呢,是有两种方式,是不是有或者没有,那如果有的话呢,我这里要判它是否过期对不对,那在这呢,我也。
01:04
定义一个方法,比如说叫做。判断它是否是有效的啊。To判断呢,我这个S是否是有效的,它呢,待会呢,我们去设定它,它的返回值呢,对应的就有一个过期或者没过期是不是,所以说我们决定它的返回值应该是怎样的呢?True或者false是不是true呢,代表它是有效的,有效的就是没有过期,因为他判断它是否是有效的,有效是不是没有过期啊,没有过期我就直接使用,我就没什么说的,如果过期了,我是不是得重新请求啊,好这样的请求啊,S粉那么我也。是不是也可以定义个方法叫做getn,获取我这个N是不是一个方法,接着我是不是要保存我这个token啊,那我在这里是不是也要定一个方法,叫做是不是保存save access token是不是好这里呢,以上呢就有四个方法了,对不对四个方法了,那对应的我下面这里是不是也要发出请求啊,诶,那这里它是不是跟这个get son是一样的方法,那这里保存下来,这是save was ton,那么在这呢,它是不是也是save was ton啊,也是一个保存的方法比而在这里呢,我们发现实现整个思路的话呢,我要定义出来。
02:35
四个方法是不是四个函数,四个方法那么好,那咱们要去定义这个函数啊,那么我们在这里呢,这样去做啊,我们呢,去定义一个类。定义一个类,定义这个类呢,在这里类里面呢,是不是定义这四个方法啊,从而呢,如果只要我有这个类了,有这个类呢,我就可以拿到这四个方法,从而去做一些操作,是不是,那我定一个类去实现他们,那我在这呢,我们命名为什么呢。
03:05
啊,咱们这叫we叉子啊啊,因为呢,待会到后面呢,这个累呢,就不止做这些事了,咱们就叫we叉子第一个类好we叉类的话呢,首字母样大写是不是好we叉好在这里面呢,它是不是个空,那么这里面放我的。类的属性是不是好,咱们呢,不知道有什么属性,我们先不看,我们先去定义这些方法,好定义这些方法呢,我们先这样做啊,我们不按照顺序来,我们先去定义这个get,先把它给我实现了,好定义这个方法呢,我们就要考虑这个方法是干嘛的呢。这个方法用来。用来获取access token的,是不是专门用来获取token的好,然后呢,对应的我这里需不需要传参数。我通过这个方式呢去获取,我需不需要传参,如果需要的话,那我传什么参?
04:07
这什么,想想。在想我这个函数中的参数,它应该有什么特点呢?它应该是变化的,是不是才是传舱啊,是不是你一旦要是酸的就说明,比如说我A调用它,可能我传一个A这个变量,那B调它呢,可能传一个B这样变量,就是我传参,这个参数可能会发生变化,是不是只有可变的东西,我把它定义成参数,这样价值才更大,如果不变东西呢,我是不是直接可以写在这个函数内部啊,我就不需要再去定义相应的参数了,那么我们这里要讨论就是我待会我要去发送请求,请求我这个斯托N这里面有没有可变的值。然后再回过头来看一下,咱们的这个请求地址是不是这样的,这请求地址里面唯一可变的是不是三个参数啊,那这三个参数会发生变化吗?
05:08
想想会不会第一个参数它是固定不变的,就这么写是不是你压根不用改,第二个是不是APID,第三个是不是A啊,这两个参数它会发生变化呢?不会,所以说我们对于我们这个方法来说,它要不要传三呢?是不是暂且不需要啊,啊不需要传三啊,不需要传三,所以说我们这里呢,就要想办法去拿到这个,去定义这个请求的地址是不是可以啊,定义这个请求地址是不是这个我们有个模板字上包着,因为这里面呢,有些参数呢,它是需要去传递进去的,是不是好,这样的第一步我们是定义请求的地址是不是好,这两个参数在哪呢?在我们的con中是不是,哎,咱们上午呢,定义的是con啊,Con里面呢,就有这个PID和APP secret是不是在这里只要引入这个就来了,好,咱们呢,用结合赋值的方式去拿到我们想要的值啊,Re e。
06:11
点回文是不是啊,就了写ID是不是就有这两个参数了,好接下来呢,就在这里去使用。怎么使用?多少福大括号是不是在这写啊,下面这个呢,也是多了福大括号APP secret是不是好这呢,我们的这个请求的地址就来了,是不是就来了,好在这呢,我们是引入这个。啊,文件模块好好,这里呢是定一个类。类现在暂且目前呢,它是用来获取access pon的,是不是目前是用来获取这个东西的,好,那咱们这个方法是不是定义出来了,有这个请求地址了,接下来是不是要想办法去发送请求啊,好,请求好,在这里呢,首先我们在这里是服务器端,是不是,那服务器端呢,就没有办法去使用阿贾克斯,所以说呢,在服务器端这一块呢,我们通常会去借助一些库来实现我们发送请求的办法,那在这呢,我们使用一个库叫做。
07:31
这是快库,来大家看一下啊,这个库呢,我们可以上PM搜一搜。我们呢,待会要使用两个库,一个叫做一个叫做request啊,一个叫做REQUEST2个的库,我们呢,待会都得下载使用的库呢,我这写清楚啊,待会要下载两个库,必须要下载第一个是request库,第二个是request啊,I q e ST PL promise2个这样的库啊,第二个库呢,它呢依赖于我第一个库,然后第二库呢,它相当于是包装了我第一个库,然后呢,想办法做一下他自己的一些处理啊,所以说我们这两个库都可以下载啊,我待会呢,我就得n PMI这个request是不是QS。
08:24
Promise啊,要下载这两个库了,好看一下能不能下载。好,下载完成之后呢,我们说一下这个两个库该怎么使用,我们呢,使用的话呢,只需要引入这个库就可以了,大家看啊,就看这个库它是用来干嘛的。首先是用来发送请求的,是不是,然后这个发送请求的库有什么特点呢?Promise说明他这个请求是不是自己包装了一层promise对象啊,是不是?诶这里叫native的话呢,意思就是使用原生not just的promise对象,所以说使用原生not just的promise项包装的这个request这个库,然后最终呢,可以让我这个库的返回值是一个promise项,从而呢,能够保证它的执行是没有问题的啊好,那这里呢,我们首先要用的话呢,是不是要去引入啊,下载完成还得引入,这里引入只需要引入啊,只需要引入。
09:27
Require promise a native,只需要引入这个库就可以了,所以说你在这里呢,就啊,它这叫RP,等于require。Require promise是不是好这里呢,用个RP来去简写它这个库的名称啊,好,接下来通过它是不是能发送请求了,好看一下它是怎么发送起求的来看啊。下面发送请求呢,它发送请求是个方法,只要在这个方法里面传一个对象,这个对象里头告诉他发送请求的一些相应的设置,它就能发送请求了,这里面我们要设置什么呢?首先我们要设置请求的。
10:07
方式是不是我们请求方式是get好请求方式来了,第二个呢,你要取限制请求的地址是不是好,咱们是不是ul等于ul啊,然后这里可以怎么写呢。同名是不是可以省略不写,只要写一个ul就可以了,是不是啊,这是一个对象,这里用的是对象的。简写方式对不对,简写方式好,下面呢,还有一个叫做dress为好处转为true呢,然后呢,会将你如果要发送的数据的话呢,转换成Jason,然后发送过去,发送过去好在这里呢,是不是发送请求了好它的返回值。返回值是一个。Promise对象他呢会自动的去帮你处理好,一旦他呢接收到数据,就会自动将状态改为成功,一旦他没有接收到数据,他会将状态改为失败,是不是他会这样做,所以说一旦启用成功,我这里是不是通过点对能够拿到成功的回调啊,拿成功的回调,然后拿到失败的回调叫做点cash是不是拿到失败的回调好成功的回调这里面呢,可以默认有一个参数,是不是叫result,咱们缩写啊,Yes这个参数呢,是不是就是它最终请求回来的这个数据啊,最终请求回来数据就是它yes,好,这个catch里面呢,是不是也L这个对象啊,最终不是可能会出问题,那我们来也看一下这个L啊好,到这呢来看它呢,是不是最终会请求回来这个yes啊好,我们来看一下,到底能不能请求回来。
11:53
我们呢,来测试一下这个方法到底行不行,这时候呢,我们呢,在本地去模拟一下,在本地模拟一下啊,咱们呢,模拟测试一下。
12:04
在这里呢,我首先要去串这个小写的叉,是是通过new一个大写的叉,是不是才有啊,接着呢,W的方法有个叫做get方法,是不是它到会会调用,调用之后是不是会发送请求,然后请求数据,最终这个数据是不是会打印出来啊,我们看一下究竟能不能拿到我们想要的结果,右键乱想那些文件就可以了。好,有没有,是不是回来了,这东西是不是我们请求回来的这个open它呢,返回一个对象,是不是这对象呢,有两个参数,一个是我们需要的全局唯一凭据啊,一个是它的过期时间对不对,好这拿到了之后呢。接下来呢,我们就要还还做些处理来看啊,最终呢,我们是不是要设置它的过期时间啊啊,如果我写了7200米啊,我外部能够判断出来它的过期时间吗?可不可以?
13:00
可以吗?通过7200秒能够知道我这个什么时候过期吗?是不是看不出来啊,你想想,不管谁读取都是7200秒,他哪知道你是什么时候创啊,被读取到的是不是,那他哪知道你什么时候被创建的,所以说7200秒它根本就不知道到底什么时候过期,那对于我们来说,如果想要它真正的过期时间有效的话呢,我们是不是要手动再设置一下,我们什么设置下,也就说呢,我们这个时间应该是怎样的呢?应该是当前时间加上7200秒,是不是他的过期时间啊,咱们说了要提前五分钟刷新,我们就减去五乘以60,是不是300秒啊,是这样,当它到达这个时间的时候,说明是不是就是它的过期时间啊,就是它的过期时间,所以说呢,我们索性在这里设去设置这个access token的。
14:00
过期时间啊。先把它过去时间给设置上好,怎么设置呢?我就是重写一下这个res,点这个surprise in是不是重写它的时间,它的时间应该等于什么呢?等于啊点now加上,比如我就用点express in吧,是这个东西是这个的吗?是直接相加吗?还得减去一个五乘以60是不是300减去个300啊,就是三分钟的意思是不是啊,五分钟的意思是不是好直接这样写吗?注意这个值它的单位是不是秒啊,这个秒的单位你记得要乘以1000,是不是才是真正的单位啊,值单位好,此时此刻呢,我这个res对象的express,这过期时间是不是被重写了,被重写了,所以说现在这个S这个对象就是我到时候要保存下来,这个对象是不是保存下来呢?并不是在这个方法里面进行,是不是我会专门定义一个方法去做的,所以这里面呢,我就要想办法把这个RS是不是要给返回出去啊,好,那告诉我怎么去返回出去呢?
15:23
行不行?Return,一个is,它仅仅是作为当前这个点DA函数的一个返回值是不是?它并不是我这个get token的返回值是不是?那么我们要想保证这个返回值最终被外层接收到,而且接收到的这个值啊,一定是我这个请求成功后面的值,或者是请求失败的这个值是不是?那我们该怎么做呢?啊,在这呢,我们来看啊,我们会进行这样的处理,我们现在呢,就是想要这个返回值是不是,而且这个返回值呢,应该是作为整体这个geten的返回值,是不是按目前来说,如果只在这面积这里面return的话呢,它仅仅是啊。
16:13
是不是当前我。这一块的返回值啊,当前我这个点函数的返回值是不是,而我这个get是不是没有返回值啊,那么我们要保证它能够100%执行,我们要保证这个异步的方法是不是要100%执行完毕之后,我才能做下一步保存啊,所以说为了保证它100%呢,我们用一层promise去包装。用1PROMISE去包装它,这时候呢,我只要判断这个promise的状态为成功的时候,是不是就说明我这个方法就有返回值了,就有返回值了,所以说呢,我们在这里面最终呢,是return一个新的方面对象,好,这个新的方面对象呢,就包装着我这个请求的方式,然后在这里面呢,一旦他成功的时候呢,我哺乳他了,我做什么事呢?
17:06
我家对象的。对象的状态改为。这项状态改为成功的状态,现在是不是请求成功啊,改为成功的状态就可以了,好就是通过不是so刚把它调用,是不是传一个啊,Yes,数据传出去啊传出去,注意这个数据你也记得传出去,好这是这一块,那失败的时候是不是也要去传一个数据给他,我得用。是不是调用dress和常用数据查这个error对不对,那在这呢,我们写完整一点,我们就写这个GA,我们就写这个getto方法出了问题。这样头缩方法出了问题啊,这样的今后找问题时候找的更精确一点。然后再加上这个好,这时候呢,是不是就能够去。
18:02
因为他请求现在是失败的,是不是我将这个from对象呢成状态呢,改为失败的状态是不是对的呢?我到时候出去的时候好处理好,现在呢,我们就进行了一些改装啊改装改装之后呢,我这个方法的返回值呢,就是一个promise对象了,是不是就是个promise对象了,然后呢,只要你想拿到它返回值的话呢,你就要通过点代函数,是不是接着去拿,接着去拿好这个呢,就是我们get s的分装方法。啊,这是getn好这一块呢,我们写完之后呢,我们再来看下面的啊,再来看下面的。呃,下面的一个除了这个get可能还有什么呢。还有我们的获取完之后呢,我们是不是要去保存了,是不是保存,那我们去定一个用来保存N的方法,那么这个呢,我们就saven,是不是用来保存a yes是tok呀,是不是保存SN的方法,好这个方法呢,我们来看叫做saven,那么这个方法它需不需要传值呢?
19:22
好大,想想这个方法我需不需要传值,需不需要传递参数,需要还是不需要,需要,那我要查什么?需要传啥,他要保存的东西是不是要传给我啊,是不是每一次保存的东西是不一样的,是不是,所以说你要保存的东西呢,你要给我传递过来是不是,那在这里呢,比方说我们定一个参数叫做嗯,这叫做斯托ACC。是不是他要保存东西,你要传递我,我才能给你保存下来,是不是啊,这里面呢,就有个参数的,嗯,这里好像不太好写啊,咱们用这样直接写吧。
20:08
诶,这呢,我先CTRL记一下,好,这里它会把这个参数给我写出来,这个方法呢,是用来保存这个方法啊,用来保存access的方法。啊,这个参数呢,就是到时候要保存的东西,就是要保存的这个凭据。好,来看一下,接着再写呗,我们要保存了,是不是要把它写成一个文件啊,那对应的呢,我要调用什么方法能够把它写成一个文件呢?咱们讲到什么方法能够将某个数据写成一个文件?是不是FS模块啊,咱们FS模块是不是有right方法,它能将你一个东西是不是写成一个文件进行保存啊,那我就用FS模块对应的呢,我首先要得引入是不是才行啊,好引入啊,咱们呢,通常是把一些第三方模块放在上面啊,自定义的模块放在靠下一点,这里面的还要引入FS模块是不是好,这里呢,我们其实就用FS上面的一个方法叫做。
21:19
用结构赋值是不是拿到啊,叫做right啊,File方法是不是,还有其实那个read也要写,是不是,因为咱们是不是待会还读取啊,还读取,所以说都都引入了,现在我们写right方法好,它呢,方法里面传什么值呢?另一个参数是。你要写入的文件是不是,比如说就写在本地,我就保存一个K是要保存的文件啊好第二个呢是什么呢。你要写入了数据,是不是你要写,你要写到这个文件,写什么东西,你是不是要传递给他,咱们是不是要写这个ton啊好来想一想啊,我能不能直接这样写。
22:04
直接这样写行不行?大家还记不记得啊?呃,想想我能不能直接把这个数直接传递。可不可以?行还是不行?还记得我们之前去写对象吗?我们把一个这是不是最终会有一个对象啊,对象直接写入的话,它会变成什么。把B谁高啊?Object object,这object object是我们要保存的东西吗?不是啊,因为它对象没办法直接保存,它是不是调方法数组也是类似的,那我们要想真正的保存这个数据怎么办呢?首先我做什么事加?对象转化成啊字符串,是不是这时候呢,你才可能保存成功啊,那这个呢,大家要注意,要转化成字符串,你才可能保持顺通有后这里呢,我叫dress.string是不是转化这个东西啊,转换东西。
23:18
好,比方说呢,我就把它重新接收一下吧,重新接收它转换后的内容,然后是不是在这写入啊,在这写入,然后在这里面呢,我们还有一个回调函数对不对,回调函数有一个参数叫做是error,主要就是error,如果没有问题,说明我这个文件有没有保存成功,是保存成功了,如果有问题是不是到时候就好异常了,好如果没有问题呢,我就打印一下文件保存成功是不是,下面呢,就是文件保存失败是不是啊,文件保存失败,那这里呢,我就不打印啊好在这里我们想一想,想一想啊,这个save was happen,它是个函数,是不是最终呢,我肯定也要等它保存成功之后,我才能够去真正用上它,我确保它保存成功是不是那么好,那咱们这个rise方法,它是一个。
24:13
同步的方法还是异步的方法呢?是同步的还是异步的?咱们前面讲FS模块的时候,我们是不是介绍了很多方法,我们第一个介绍的就叫做异步写入文件是不是,那这里说的就是这个当前这个方法,说明这个方法它是一个异步的,也就说它是异步的的话呢,那我执行这个saven,我能够100%确定这个东西被保存下来的呢?不能,是不是,因为它是个异步的方法,你不知道它啥时候被保存下来,那么这时候就可能会出问题,如果你不知道它啥时候被保存下来,你再去读取它的话呢,可能会报错的,所以说的话呢,我们一定要确保它是不是一定要保存下来之后,我才能做下一件事啊,那么我们怎么去确保它一定保存下来呢?
25:05
啊,所以说我们这里呢,要同样的哈,这些异步的方法要确保它能够执行成功,都包一层对象好,在这里面成功是不是我调用方法,啥也不都行,我就调用方法啊,只要你成功我就把你出去,是不是就说明成功,如果失败呢,我就调用这方法,那在这里面呢,我们写啊是saven方法出了问题,具体说什么问题呢?就是这个L对象,它会告诉你是不是好,这呢就是我们这个方法的分装啊,这个方法的分装save a是不是好,这个save搞定了,那剩下的我这个read还难吗?Read是不是我save类似的一个方法是不是好它呢用来读取啊ton,然后呢,这里面呢,要不要传参数。
26:02
我这的这个方法要不要传参数。它呢是不是要去读取文件啊,文件的路径呢,是不是基本上不会变的,所以说它这里呢,可以不用去传参数,那在这里面呢,我们来写啊,不用传三的话呢,我就不需要做第一步了,它呢是不是加了S,它呢应该是。读取本地文件中的后面是不是。它要读取本地文件中的磁头文好,同样的也要包装一层对像,确保它能够读取成功。一般我这读取方法也是一个异步的方法,第一个传的是文件路径,第二参数呢,是个配置对象,是不是咱们不写,第三个参数呢,是一个回调函数,有error,还有一个。读取的data数据是不是好,没有问题的时候呢,是不是说明我读取成功啊,读取成功我就要将这个读取的数据给resource出去,是不是叫做文件读取成功,那读取失败呢,我是不是要去说这个方法出的问题啊,这方法出问题好在这呢,我们可能要注意一个点,注意什么点呢?咱们读取到这个数据,它是个什么类型,什么类型read的方法啊,Read方法方法读球数据是个。
27:26
是不是我们前面保的保存的这个字符串啊,但是咱们是不是想使用的话呢,是希望通过对象的方式使用啊,所以在这里呢,你最好做什么事呢。啊,加。将这个字符串转化成。JS对象啊对,转换成JS对象好在这里就是要调用这个点,Power是不是解析啊,解析是不是传这个德塔啊,比如说就德塔等于这个它解析后的数据是不是啊,最终是不是把它给出去啊,啊把它给送出去好,那这样呢,咱们这一块呢,就搞定了这个读取的方法是不是也搞定了,读取的方法也搞定了,好那C方法,读取方法,获取方法都搞定了,还差一个。
28:17
Is access talk是不是好,这个方法呢,是不是判断我这个to是否是有效的,那这个方法它是不是要长三。想想他要判断这个SN是否有效的,那么你是不是要告诉我是哪个N啊,是不是,所以说对应的这里呢,它需要将这个是不是要传进来啊,是不是要传进来,所以说我这里呢,也对应的你要告诉他需要做的事是什么,这样呢是用来检查access token。是否是有效期,是不是是否是有效的啊好它呢这里面呢,我们来看这里面是不是要判断它是否有效呢,好在这呢,我们怎么写呢。
29:13
我们来首先做一个展示啊,我们首先去先去检查,在这里呢,可能要做个这样式啊,我们检测这个数据就传入参数,解入传入的参数啊,是否是有效的,先检查它是否有效的,再来去做其他事。检查它是否有效的,所以说在这里呢,我们怎么检查呢,通过if首先判断它。是否有没有,是不是80么没有,我取个反啊,取个反是不是代表他没有啊,如果他没有或者啊,这叫可能不太合适啊,另外呢,我还判断它上面是否有。TK,我要判断他是否有没有这个东东,就是叫不好叫他一个塔。
30:02
好判断他是否有没有痛,是不是我还要判断他是否有没有过期时间。E pis_E是不是我要判断它是否有没有获期时间,好在这里呢?我检查什么呢?我检查它传送的数据,首先第一个它有没有是不是好,再判断它是否有没有SN,如果没有的话呢,说明这数据是不是无效的,好如果再看下它有没有过期时间,如果没有过期时间是不是也是无效的,所说如果这些是无效的话呢,我要它用什么值呢?是不是这个force啊,咱们for是代表代表这个啊,它是。目前这不能说无过期的,是不是无效的,说明我传的这个参数就有问题是不是,所以说我推一个false,这是这一步简称啊,这个传输参数是否是有效的,好,第二个呢,我就接着真正的去验证啊,检测这个ton是否是是否在有效期内。
31:16
就是检测它是否在有效期内,那我们在这里要怎么检测呢?来我写个if判断啊,我呢无非就是判断这个点express in,我跟这个now进行。对比一下看下行不行是不是好,如果它小于到期时间,那么我这个是过期的还是没过期的。想想我这个时间小于当前时间,我是过期的还是没过期的代表啊,过期了是不是来看一下这个时间轴啊,大家看一下我这是我时间轴是不是好比方说这里代表的是代次点到对不对,咱们时间当写时间是不是来到这里啊,好,是不是过去时间它小于它是不是代表在代表它在它的左手边啊好,这是不是过期时间,是不是早就过了这个过期时间啊,已经过去了一大半了,是不是来到这里来了,所以说是不是代表我这个斯粉已经过期了是不是,那反之,如果他在。
32:21
这边呢。是不是现在时间还在这里,我过期时间是不是还等一段时间才能过期啊,所以说如果我这个in大于我这个data now是不是说明我没有过期啊,没有过期,所以说这里是不是else代表它是。没有过期是不是好,过期呢?我们return一个false过,没有过期我成一个数是不是好,咱们这是不是写一个这样的东西好,通常情况下呢,如果是简单的if else判断的话呢,我们会怎么做呢?我们一般会用三元表达式去写,是不是,所以最终能return一个值是不是,那咱们还有更简单的更简单的写法啊。
33:07
我改一下值就行了。哦,我就这样写行不行?我就这么写,我别的都不写了,我就这样写。这样写行不行,能不能检测出来它的值,能不能正确的返回处,正确的返回false,可不以可以的啊,因为当前我这个时间大于他,我这过期时间大于我现在时间,说明我有没有过期,没有过期应该返回多少返回处,你看他是不是到时候到时候会返回处啊,因为这个判断的话呢,它会返回一个不值,它就会返回处,如果它小于它,它会返回什么处,返回false,因为它不大于它嘛,所以说会返回false,所以这样写是不是就足足够了,就不需要写三元表达式的啊,咱们代码量的就更少了啊啊这样呢,就是检测我这个是否有效期的这个方法是不是它呢就返回不尔值,所以说呢,你不用去考虑再去给它包装什么方最像,因为这个呢,就是简单的一个同步方法,是不是不用去考虑了啊好,到此为止呢,咱们这四个方法是不是定义出来了,定义出来了好,那咱们呢,去写个小例子。
34:22
去实现一下,咱们在下面呢,继续写个小例子,去模拟测试一下,怎么写呢,我们来把这一段话给实现掉,是不是待会我们要去按照这个思路去走啊,按照这个思路去做,把这个思路拿出来啊。我们呢,在下面呢,去做一下这个思路。也这样做,首先是不是读取文件啊w.read好,最终呢,它返回值是一个什么东西。是不是包括包装着我本地的那个sto文件的一个promise对象啊,所以说我通过点和点catch是不是能拿到它的返回值,点D代表我请求,代表我读取是成功的,说明我这个数据有没有有啊如果进入到这说明本地是有文件的,点catch呢,说明本地是没有文件,好咱们先把点catch写完,点catch简单本地没有文件,我觉着干嘛,是不是发送请求重新获取啊,所以在这里呢,我就要w.get老再操作方法是不是好,它的方法呢,是不是也有返回值啊,好,这里面呢,如果你再写的话,是不是继续点ne啊,继续点ne,然后这里是是is是它的返回值,好返回值的话呢,你最终呢,是不是要想办法把这个返回值给保存下来啊,也就是在这里面呢,你还得调用w.C方法,是不是保存好C。
35:53
保存的话呢,在这里面呢,你要传什么参数。
36:00
这就叫是不是你要将你保存的数据是不是要传递下去啊,啊这里呢是说明。呃,本地没有文件,所以说要发送请求,重新请求你的。本地没有文件,所以说要发送请求,重新请求N,然后在这里呢,将它保存下来,是不是好保存下来,那这里面就有个这样的问题,我的确保存下来了,东西保存下来了,但是呢,我想啊,最终呢,我是会定义一个东西,最终呢,我应该返回出去什么呢。就是我知道这些步骤走完之后啊,是不是我应该返回出去什么东西。我这些所有步骤走完,其实最终的一个目的呢,就是为了获取到一个在有效期内没有问题的access token,是不是我最终就是为了获取到这个,你这些方法呢,均是为了做这些处理而去设置呢?所以说呢,当我走完这一步,是不是最终要直接使用啊,你要使用你前提是你要想办法,是不是将你这个东西给爆出去才有啊,你要将它给爆出去才有,好待会呢,我们再想,这里到底该怎么去暴露比较好呢?
37:20
是不是好这里呢,我们有多种办法啊,好这里呢,你其实最蠢的一个办法怎么办呢?来看我们是不是要想办法把这个I返回出去啊,Is返回出去,那我们有很多很多办法,比方说有个办法叫做什么呢。转为又一个大小方,我在这里面是不是再把它给全部。放进来啊,他需要返回解答返回呗,我就首先在他的点点成功的回调中,注意在他成功的回调中啊,你必须要在他成功的回调中说明你这个文件是不是保存成功啊,成功的回调中呢,你调要用你so方法是不是,既然你这个RS是不是给塞出去啊,塞出去好啊,到这儿呢,其实嵌套了很多次回调了,签到这么多次回调呢,我们应该用什么去解决呢?
38:16
我们用什么可以去解决这些,嵌到这么多层,用think函数是不是能解决啊,所以待会呢,我们会将这个改造成啊S函数改造成S函数哈,这个呢,我们待会来做好这一块,是不是写完了,这块逻辑好,其实是本地有文件啊,本地有文件我得判断它是否过期。那我就直接这样写啊,W点。Isn传我这个读取的啊,Yes是不是好,它要么返回,要么返回false,返回true呢,说明它是有效的是不是,那我在这里呢,就直接调用so方法,是不是将这个yes给传递出去啊,有效的说明我可以直接使用是不是,那么如果没效了呢?没效是不是说明过期了,过期了我是不是又走我下面这些逻辑啊,又走一步这样的逻辑啊好所以说待会呢,我们再想办法去把它给做的更好一点,是不是要把它给做的好更好一点,好到目前为止呢,咱们就写了个简单的方式呢,把握这个方法给实现了,是不是给实现了啊就是这个如此的一个场景,好最终呢,这个值呢,又一个promise下是不是,那我只要promise点单在这个成功的回调中,我就能够拿到我的。
39:44
Re ES是不是这里呢就可以拿到我想要的,Res,没有问题的了,是不是啊,我们尝试预习一下三文件,好,你看是不是打印出来了,已经打印出来了,并且呢,我本地呢,会多一个n.TST文件是不是,那这个文件里面保存的就是我当前的奥N以及它的过期时间是不是好到这呢,咱们就将这个四个方法给写完了啊,那大家呢,剩下时间呢,大家把这四个方法给它写一写啊好。
我来说两句