Promise简介

本文深入解析Promise对象的概念,包括创建方式、基本语法及如何通过then和catch进行结果处理。同时,详细介绍了Promise.all和Promise.race等常用方法的应用场景与实例。

一、概述:

Promise对象用于表示一个异步操作得完成(或失败),以及其结果。

二、语法:

创建Promise实例:

let a = new Promise((resolve,reject)=>{//执行函数 })

或 let a = new Promise( function(resolve, reject) {...} /* executor */ );

通过then catch调用

a.then((value)=>console.log('代码正常运行'));//响应resolve函数

a.catch(error=>{console.log('代码出错')});//响应reject函数,或者程序运行时出错

三、示例:

1、let a = new Promise((resolve,reject)=>{ /* executor 执行函数*/

throw('error')//or reject('error') //失败

});

a.then((value)=>{

console.log(value);

});

a.catch((error)=>{

console.log(error);

});

结果: error

2、let a = new Promise((resolve,reject)=>{

resolve('hello');//成功,程序正常执行

});

 

a.then((value)=>{

console.log(value);

});

a.catch((error)=>{

console.log(error);

});

结果: hello

说明:

Promise对象有关键字new以及其构造函数来创建,改构建函数会把一个叫做“处理函数”(executor function)的函数作为它的参数,这个函数接受两个函数作为参数——resolve,reject;当异步任务顺利完成时,调用resove,当异步任务失败则调用reject;

四、Promise常用方法

     1、Promise.all(iterable)

这个方法返回一个新得promise对象,只有iterable中所有得promise对象都成功才会触发成功,一旦有任何一个iterable里面的promise对象失败则立即触发该promise对象的失败且返回第一个触发失败得Promise对象错误信息。个新的promise对象在触发成功状态以后,会把一个包含iterable里所有promise返回值的数组作为成功回调的返回值,顺序跟iterable的顺序保持一致。常用于处理多个promise对象得状态集合。

实例:

成功示例:

let p1 = new Promise((resolve)=>{

resolve(1);

})

let p2 = new Promise((resolve)=>{

resolve(2);

})

let p3 = new Promise((resolve)=>{

resolve(3);

})

Promise.all([p1,p2,p3]).then((values)=>{

console.log(values);

})

结果: [1, 2, 3]

失败示例:

let p1 = new Promise((resolve)=>{

resolve(1);

})

let p2 = new Promise((resolve)=>{

resolve(2);

})

let p3 = new Promise((resolve,reject)=>{

reject('failed');

})

Promise.all([p1,p2,p3]).then((values)=>{

console.log(values);

}).catch((error)=>{

console.log(error)

})

结果:failed

2、Promise.race(iterable)

当iterable参数里的任意一个子promise被成功或失败后,父promise马上也会用子promise的成功返回值或失败详情作为参数调用父promise绑定的相应句柄,并返回该promise对象。

       3、Promise.resolve(value)

        返回一个状态由给定value决定的Promise对象。

      4、Promise.reject(reason)

        返回一个状态为失败的Promise对象,并将给定的失败信息传递给对应的处理方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值