// 异步操作成功时
{status: \\\'fulfilled\\\', value: value}
// 异步操作失败时
{status: \\\'rejected\\\', reason: reason}
成员对象的status属性的值只可能是字符串fulfilled或字符串rejected,用来区分异步操作是成功还是失败 。如果是成功(fulfilled),对象会有value属性,如果是失败(rejected),会有reason属性,对应两种状态时前面异步操作的返回值 。
总结
有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数 。此外,Promise对象提供统一的接口,使得控制异步操作更加容易 。
Promise也有一些缺点 。首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消 。其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部 。第三,当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成) 。
升级用法 async await
ES2017 标准引入了 async 函数,使得异步操作变得更加方便 。
async 函数是什么?一句话,它就是 Generator 函数的语法糖 。
基本用法
async function fn() {
var str = \\\"\\\";
var text = await readText(\\\"../data/1.txt\\\"); // Promise实例
console.log(\\\"line 29:\\\",text);
str += text;
var text = await readText(\\\"../data/2.txt\\\"); // Promise实例
console.log(\\\"line 33:\\\",text);
str += text;
var text = await readText(\\\"../data/3.txt\\\"); // Promise实例
console.log(\\\"line 37:\\\",text);
str += text;
return str;
}
fn().then(res=>{
console.log(\\\"line 44:\\\",res)
}).catch(err=>{
console.log(\\\"line 46:\\\",err)
})
结果:
line 29: 11111
line 33: 22222
line 37: 33333
line 44: 111112222233333
【promise是什么意思 promise的用法】async函数的返回值也是一个Promise实例,在async函数执行的过程中,一旦遇到await就会先返回pending(进行中)状态的Promise实例,等待异步操作有结果之后,继续执行await之后的语句,依次类推,语句全部执行完毕且无错误的情况下,则返回的Promise实例会变为已成功,否则会变为已失败 。
- 12月是什么星座 十二月份有什么花开放
- 张学友和张家辉到底是什么关系[张学友和黄家驹]
- 正规乒乓球比赛规则详细流程大全 乒乓球的比赛规则是什么
- 企业常用的8中推广方式 互联网网络推广是什么
- 淘宝会员名是淘宝账号吗 淘宝会员名是什么
- 牛西冷是什么部位
- 平板电脑二合一是什么意思
- hrd是什么职位的简称 hrd是什么岗位
- 荧光材料的发光原理是什么 没有光源荧光材料会不会发光
- 101是什么意思 101事件真相知乎