promise对象
2017-04-11 13:32:14 0 举报
AI智能生成
Promise对象是JavaScript中的一个构造函数,用于处理异步操作。它表示一个尚未完成但预计在未来完成的操作,并且其最终的成功或失败的值。Promise有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。当异步操作开始时,Promise对象被创建并处于pending状态;当异步操作成功完成时,Promise对象变为fulfilled状态,并将结果作为其值;当异步操作失败时,Promise对象变为rejected状态,并将错误信息作为其值。Promise对象还可以链式调用,以处理多个异步操作的顺序执行。
作者其他创作
大纲/内容
promise
使用背景
JS单线程
缺点:同步的时候耗时长
同步
往往用于一些简单的、快速的、不涉及 IO 读写的操作
操作系统与线程同步等待IO的执行
异步
每一个任务分成两段,第一段代码包含对外部数据的请求,第二段代码被写成一个回调函数,包含了对外部数据的处理
操作系统在读入文件的时候,线程在做其他事情
JS优先执行同步代码,待所有的同步代码执行结束后,JS引擎会按照任务队列中的顺序来执行异步代码
回调函数
优点是简单、容易理解和部署,缺点是不利于代码的阅读和维护
特点
不会立刻执行
传递参数的定义,需通过()运算符调用
是个闭包
能访问到其外层定义的变量
允许传递多个回调函数
回调函数嵌套
sample01>sample02>sample03>sample04
使用场景
异步编程
事件监听、处理
任务的执行不取决于代码的顺序,而取决于某个事件是否发生。
setTimeout、setInterval方法
Promise基本概念
promise只有三种状态,未完成,完成(resolve)和失败(rejected)。promise的状态可以由未完成转换成完成,或者未完成转换成失败。promise的状态转换只发生一次
回调函数改造promise对象
常用方法
promise.all()
日常开发中经常会遇到这样的需求,在不同的接口请求数据然后拼合成自己所需的数据,通常这些接口之间没有关联(例如不需要前一个接口的数据作为后一个接口的参数),这个时候 Promise.all 方法就可以派上用场了
小结
Promise对象的优点在于,让回调函数变成了规范的链式写法,程序流程可以看得很清楚。它的一整套接口,可以实现许多强大的功能,比如为多个异步操作部署一个回调函数、为多个回调函数中抛出的错误统一指定处理方法等等
Promise 也有一些缺点。首先,无法取消 Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise 内部抛出的错误,不会反应到外部。第三,当处于 Pending 状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。
http://javascript.ruanyifeng.com/advanced/single-thread.html
0 条评论
回复 删除
下一页