00:00
哈喽,大家好,那这一个小节我们首先先来介绍一下promise。Promise是什么呢?它是ES6引入的进行异步编程的新的解决方案。从语法上来说呢?Promise是一个构造函数,可以进行对象的实例化。而这个promise对象呢,可以用来封装一个异步操作,并且可以获取其成功或者失败的结果值。那么在这里面提到了异步编程,异步操作,这个异步操作包括哪些呢?我们来列举几个。好,异步编程。这里包,这里包括但不限于的情况啊,有以下几个,首先第一个FS文件操作。这个FS是note GS下边的一个模块,可以对计算机的磁盘进行读写操作,这是一个第二一个数据库操作。
01:01
比如说mongo DB、马赛克等数据库操作,这里边儿也是异步编程,还有一个呢,是阿贾克斯网络请求,在这块的话,在这块它也是一个异步操作。还有定时器。哎,Set time out这个也是一个啊,异步操作。那么这里提到呢?Promise是异步编程的新的解决方案,那么旧的解决方案的话是用谁呢?是使用的单纯的回调函数。在这里边FS。我们可以来写一个DEMO啊,Require,然后FS。然后点read the file。第一个是路径点杠index.html,后边呢是error到data,你可以看一下这个处理结果,咱们靠的是什么呀?啊用的是什么呀,用的是回调函数的方式去处理,那么数据库操作这块呢也是如此,那么阿贾克斯呢,咱们就以几query来为例,更为明显一些。
02:06
dollar.get第一个我们给谁发请求?第二个传什么参数,第三个就是一个回调函数。啊,你看这里用的也是回调函数,定时器就更不必多说了。啊,咱们写一个set timeout,第一个参数就是一个回调函数。所以说,在。Promise,还有呢,I think awa以及生成器,之前我们进行异步操作时用的都是纯回调函数的方式来进行处理的。好了,那么下面的话我们来说一下为什么要使用promise呢?啊,我们不使用promise,使用回调函数不行吗?哎,可以,但是promise有一些优势,首先第一个啊,咱们先看这个,这个是很重要的啊,如果你面试找工作,这个是必须要答出来的,就是promise,它支持面试调用,可以解决回调地域问题。
03:10
那么什么是回到地域问题呢?我们首先先来看一张图。在这儿。点开它。好,右。我把它缩小。好,你大家可以看一下,在这块呢,是这就是一个回调地域,比较典型的一个情形,就是一个回调函数当中套着另外一个异步任务,一个回调函数里边又套着另外一个异步任务,这就是回调地域的一个情形。它非常重要的一个特点就是这个代码会不断的向前缩进。那么这样的话会有一些缺点,什么缺点呢?首先第一个就是不便于阅读。啊,你看着代码看起来他不断的往前去推进啊,异步任务越多,他推进的这个层级就会越深。
04:03
那么第二个它不便于异常处理。那么每一层在进入异步任务的时候,我们都要对这个错误呢进行一个处理,可能会写很多重复性代码,所以在这一块的话,它的错误处理也是不方便的。好,这是第一个它的优点,支持链式调用,可以解决回调地域问题。第二一个呢是它指定回调函数的方式会更加的灵活。那在之前呢,我们必须在进行异步任务之前,就得把回调函数得先准备好啊,得先准备好,那么但是呢,有了promise之后,我们启动了异步任务之后,在后边可以去进行回调函数的一个指定。所以这块是非常非常灵活的,而且我还可以呢,在异步任务之后去指定多个回调函数来处理这个成功或失败的结果,所以说promise在这块比原传统的这个纯回调函数啊,它的方式要更加的灵活。好,这是我们这个小节来对promise做了一个介绍,首先promise是ES6引入的异步编程的新的解决方案,从语法上来说,它是一个构造函数。
05:19
然后可以实例化对象封装,异步操作,获取成功和失败的结果。其优点是支持练试调用,可以解决回调地域问题,这个在面试时一定要答出来。第二一个是指定回调的方式更为灵活。好这个小节我们就先到这儿。
我来说两句