Promise

129 阅读1分钟

1.什么是Promise

Promise 是异步编程的一种解决方案,其实是一个构造函数,
自己身上有all、reject、resolve这几个方法
,原型上有then、catch等方法。

1.1 promise 状态

    (1)对象的状态不受外界影响。Promise对象代表一个异步操作,
    有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。
    只有异步操作的结果,可以决定当前是哪一种状态,
    任何其他操作都无法改变这个状态。

1.2简单的promise 实例

let p = new Promise(function(resolve, reject){
	//做一些异步操作
		setTimeout(function(){
			console.log('执行完成Promise');
			resolve('要返回的数据可以任何数据例如接口返回数据');
		}, 2000);
	}}

2.Promise的使用场景

function promiseClick(){
		let p = new Promise(function(resolve, reject){
			setTimeout(function(){
				var num = Math.ceil(Math.random()*20); //生成1-10的随机数
				console.log('随机数生成的值:',num)
				if(num<=10){
					resolve(num);
				}
				else{
					reject('数字太于10了即将执行失败回调');
				}
			}, 2000);
		   })
		   return p
	   }

	promiseClick().then(
		function(data){
			console.log('resolved成功回调');
			console.log('成功回调接受的值:',data);
		}, 
		function(reason, data){
			console.log('rejected失败回调');
			console.log('失败执行回调抛出失败原因:',reason);
		}
	);	

3.catch

catch就是用来捕获异常的,
也就是和then方法中接受的第二参数rejected的回调是一样的

function promiseClick(){
	let p = new Promise(function(resolve, reject){
		setTimeout(function(){
			var num = Math.ceil(Math.random()*20); //生成1-10的随机数
			console.log('随机数生成的值:',num)
			if(num<=10){
				resolve(num);
			}
			else{
				reject('数字太于10了即将执行失败回调');
			}
		}, 2000);
	   })
	   return p
  },
	promiseClick().then(
		function(data){
			console.log('resolved成功回调');
			console.log('成功回调接受的值:',data);
		}
	)
	.catch(function(reason, data){
		console.log('catch到rejected失败回调');
		console.log('catch失败执行回调抛出失败原因:',reason);
	});