promise案例

本文深入探讨了Promise在实际项目中的应用,通过具体的案例分析了如何使用Promise处理异步操作,解决回调地狱问题,提升代码可读性和维护性。
摘要由CSDN通过智能技术生成
请选择省份
<script src="js/tools.js"></script>
<script>
	// get 异步请求 url
	function promiseAjax(url) {
		return new Promise(function(resolve, reject){
			ajax({
				type : "get",
				url : url,
				dataType : "json",
				success : function(data){
					resolve(data);
				},
				error : function(err){
					reject(err);
				}
			});
		});
	}

	function loadProvince() {
		var _url1 = "http://route.showapi.com/1149-1?showapi_appid=29550&showapi_sign=1b9802a551774e3480cb844e18f0ceef&level=1",
			_url2 = "http://route.showapi.com/1149-1?showapi_appid=29550&showapi_sign=1b9802a551774e3480cb844e18f0ceef&level=1&page=2";

		/*
		// 利用Promise对象将异步嵌套转换为同步链式调用的方式
		var html = "";
		promiseAjax(_url1).then(function(data){
			console.log(data);
			data.showapi_res_body.data.forEach(function(province){
				html += `<option>${province.areaName}</option>`;
			});
			return promiseAjax(_url2);
		}).then(function(data){
			console.log(data)
			data.showapi_res_body.data.forEach(function(province){
				html += `<option>${province.areaName}</option>`;
			});
		}).then(function(){
			$("#province").innerHTML += html;
		});*/

		// Promise.all()
		// 当两页数据都加载完成后,执行成功的回调函数
		Promise.all([promiseAjax(_url1), promiseAjax(_url2)])
					 .then(function(array){
					 	var html = ""; // 存放HTML字符串
					 	// 第一页省份数据与第二页省份数据串联后遍历
					 	array[0].showapi_res_body.data
					 		.concat(array[1].showapi_res_body.data)
					 		.forEach(function(province){
					 			// 连接下拉列表中的列表项标签
								html += `<option>${province.areaName}</option>`;
							});
					 	// 显示所有省份
					 	$("#province").innerHTML += html;
					 	console.log(arguments);
					 });
	}

	loadProvince();
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值