es6中Promise的使用

博客围绕Promise消除异步操作展开,介绍了Promise的使用,即能用同步方式书写异步代码,还提及了使用方法并举例,展示了有Promise后异步代码的书写形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Promise—消除异步操作

Promise的使用:用同步一样的方式,来书写异步代码


使用方法及举例:

<script>
	let p1 = new Promise(function (resolve, reject){		// 创建一个Promise对象
		// resolve  成功了
		// reject  失败了
		
		$.ajax({
			url: 'arr.txt',
			dataType: 'json',
			success(arr){
				resolve(arr);
			},
			error(err){
				reject(err);
			}
		})
	});
	
	let p2 = new Promise(function (resolve, reject){
		// resolve  成功了
		// reject  失败了
		
		$.ajax({
			url: 'json.txt',
			dataType: 'json',
			success(arr){
				resolve(arr);
			},
			error(err){
				reject(err);
			}
		})
	});
	
	Promise.all([		// Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。
		p1, p2
	]).then(function (arr){		//当成功的时候调用第1个函数
		let [res1, res2] = arr;
		alert('全都成功了');
		alert(res1);
		alert(res2);
	}, function (err){		//当失败的时候调用第2个函数
		alert('至少有一个失败了'+err);	
		console.log(err)
	});
	
	p.then(function (arr){		//当成功的时候调用第1个函数
		alert('成功'+arr);
	}, function (err){		//当失败的时候调用第2个函数
		alert('失败'+err);	
		console.log(err)
	});
	</script>

其上面代码可以优化如下:

<script>
function createPromise(url){
	return new Promise(function (resolve, reject){
	// resolve  成功了
	// reject  失败了
	
		$.ajax({
			url,	//url: url,
			dataType: 'json',
			success(arr){
				resolve(arr);
			},
			error(err){
				reject(err);
			}
		})
	});
}

Promise.all([
	createPromise('arr.txt'),
	createPromise('json.txt')
]).then(function (arr){		//当成功的时候调用第1个函数
	let [res1, res2] = arr;
	alert('全都成功了');
	alert(res1);
	alert(res2);
}, function (err){		//当失败的时候调用第2个函数
	alert('至少有一个失败了'+err);	
	console.log(err)
});

</script>

Promise的运用

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
	</head>
	<body>
	</body>
	<script>
		Promise.all([
			$.ajax({
				url: 'arr.txt',
				dataType: 'json'
			}),
			$.ajax({
				url: 'json.txt',
				dataType: 'json'
			}),
		]).then(function (results){
			let [arr, json] = results;		// 解构赋值
			alert('成功了');
			console.log(arr, json);
		}, function (){
			alert('失败了');
		})
	</script>
</html>

在这里插入图片描述
在这里插入图片描述
有了Promise之后的异步大概是这样写的:

Promise.all([$.ajax(), $.ajax()]).then(results=>{
	// 成功了
}, err=>{
	// 失败了
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值