promise
1.简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。最大的好处,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。
2.有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)
3.只有两种可能:从pending变为fulfilled和从pending变为rejected
4.resolved可以将pending状态改成fulfilled状态
5.then有两个参数,可以理解为处理fulfilled与rejected这两个状态的回调函数,一般我们在第一个回调函数里用resolved(data)来返回给调用者
6.then方法返回的是一个新的promise对象,promise.then().then().then()这种写法是可以的
7.promise可以配合es7里的async使用,return一个resolve对象而不是一个promise对象
8.catch返回的也是一个promise对象,后面也可以跟着then
如果某些事件不断地反复发生,一般来说,使用 Stream 模式是比部署Promise
更好的选择。
缺点
1.执行后无法取消
2.如果不设置回调函数,Promise内部抛出的错误,不会反应到外部
3.当处于pending状态时,无法得知目前进展到哪一个阶段
fetch/require
1.是browser对象里window对象的方法
2.下一代类似ajax的API,很好的实现了对xhr的封装
3.fetch(require).then().then().catch()的方式调用,在require里设置url,method,mode等
4.Get请求有参数的时候,跟在require的url后面
5.require可以设置表头请求时候带上cookie
async/await
1.async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已。
- Generator 函数需要执行器去一条条的执行,async函数自带执行器,可以跟普通函数一样,一行代码执行
3.async函数返回的是 Promise 对象,可以作为await命令的参数
4.正常情况下,await命令后面是一个 Promise 对象。如果不是,会被转成一个立即resolve的 Promise 对象
网友评论