promise是什么意思 promise的用法( 五 )


// 异步操作成功时
{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实例会变为已成功,否则会变为已失败 。