ES6语法学习笔记之promise

184 阅读1分钟

Promise:解决异步回调问题

		let a=10;
		let promise = new Promise(function(resolve,reject){
			//resolve,成功时调用
			//reject,失败时调用
			if (a==10) {
				resolve('成功')
			}else{
				reject('失败')
			}
		});

		// promise.then(success,fail);

		promise.then(res=>{
			console.log(res);//成功
		})

Promise.all([p1,p2,……])

let p2= Promise.resolve('bbb');
		let p3=Promise.resolve('ccc');
		let p4=Promise.resolve('ddd');

		Promise.all([p2,p3,p4]).then(res=>
		{
			console.log(res);//["bbb", "ccc", "ddd"]
			let [res1,res2,res3]=res;
			console.log(res1,res2,res3);//bbb ccc ddd
		})

Promise.race([p1,p2,……])只要有一个成功就返回

		let p2= Promise.resolve('bbb');
		let p3=Promise.resolve('ccc');
		let p4=Promise.reject('ddd');

		Promise.race([p2,p3,p4]).then(res=>
		{
			console.log(res);
		}).catch(err=>{
			console.log(err);
		})//结果是bbb

Promise用于数据交互

		let status=1;

		let userLogin = (resolve,reject)=>{
			setTimeout(()=>{
				if(status == 1){
					resolve({data:'xxxxx',msg:'ccc',token:'xahoagoa'});
				}else{
					reject("shibaile");
				}
			},2000);
		};
		let getUserInfo = (resolve,reject)=>{
			setTimeout(()=>{
				if(status == 1){
					resolve({data:'获取用户信息成功',msg:'梭梭酱',token:'tiaotiaohou'});
				}else{
					reject('lose');
				}
			},1000);
		}

		new Promise(userLogin).then(res=>{
			console.log(res);//{data:'获取用户信息成功',msg:'梭梭酱',token:'tiaotiaohou'}
			console.log('用户登录成功');
			return new Promise(getUserInfo);
		}).then(res=>{
			console.log('获取用户信息成功');
			console.log(res);
		})