很久没写博客了......看了很多关于Promise的文章,但是感觉也不是很理解,没办法去就看视频了。偶然发现慕课里有个关于Promise的视频,然后今天看了前两章,顺便整理了下笔记,记录下吧~
Promise
是什么?
-
用于异步计算。
-
可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果。
-
可以在对象之间传递和操作Promise,帮助我们处理队列。
产生的原因
-
JavaScript包含大量的异步操作(AB工作的完成顺序,和交付他们时间顺序无关)
-
异步操作的常见语法
-
事件侦听和响应
-
回调
-
-
常见异步事件(浏览器中的JavaScript)
-
异步操作以事件为主
-
回调主要出现在Ajax和File API
-
-
Node.js是无阻塞高并发、依赖大量回调函数
异步回调的问题
-
嵌套层次很深,容易陷入回调地狱,使得代码难以维护。
-
无法正常使用return和throw。
-
无法正常检索堆栈信息。
-
多个回调之间难以建立联系。
ps:
-
因为异步回调函数处于新的栈中,在此栈中无法获取之前的栈的信息,之前的栈也无法获取此栈中的错误,因此try和catch是无法生效的。
-
因为无法判断异步执行顺序,只能在外层作用域声明大量的变量供内层作用域使用,导致这些变量有可能会被其他函数访问和修改,从而导致错误。
Promise详解
创建过程:
-
初始化Promise实例。
-
在实例中传入参数,该参数是一个函数(执行器)。
-
执行器拥有两个参数:resolve、reject。
-
成功调用resolve方法,失败调用reject方法。不同的方法执行完会改变Promise实例的状态。
-
执行then方法中对应的函数。