promise兼容浏览器问题

一、兼容ES6问题

1、在项目中使用到了ES6的Promise对象,代码在谷歌浏览器中正常运行,而在360浏览器下的兼容模式下,IE内核是不支持Promise的

2、通过can i use网站https://caniuse.com/)查到的ES6 promise的支持情况

 

3、要是在项目中使用Promsie对象,解决方法是使用第三方插件bluebird.js(github地址:https://github.com/petkaantonov/bluebird)

4、总结:bluebird中对ES6的原生Promise进行了封装,解决了浏览器兼容性问题


二、兼容IE内核的浏览器

引入   <script src = "https://cdn.polyfill.io/v2/polyfill.min.js"></script>

  或     <script type="text/javascript" src = "https://cdn.polyfill.io/v2/polyfill.min.js?features=es6"></script>

function menuType(){
		menuA = this;
		var promise = new Promise(function(resolve, reject){
			wilddog.sync().ref('').orderByKey().once('value', function (snapshot) {
			    var list = snapshot.val();
		        $("#leftNav nav").empty();
		        var html = "";
		        $.each(list, function (i, n) {
		        	menuA.menuArr.push(i);
		        	menuA.contentArr.push(n.total);
		            html += "<span class='fenlei' title='" + n.title + "' value="+i+">" + n.title + "</span>";
		        })
		        $("#leftNav nav").html(html);		        
			  	resolve(menuArr);
			});
		});
		return promise;
	}
menuType().then(function(menuArr){
// 视频查询全部
videoAll();
})
async function videoAll() {
		// 专家推荐视频-------------------------------start
		$("#expert").empty();
		wilddog.sync().ref('').orderByChild('update_time').limitToLast(homepagesize).on("child_added", function (recommenddata) {
		    let n = recommenddata.val();
		    let i = recommenddata.key();
	        var rechtml = "";
	        rechtml += '<div class="flex-box" clickhref="'+ i + '" value="' + i + '"><span class="preview-box"><i class="icon icon-video-play"></i><img src="http://' + n.thumbnail + '" /></span>'+
	        			'<h4 class="video-title">' + n.description + '</h4>'+
	        			'<span class="corner">会员免费</span><span class="look">'+
	        			'<i class="icon icon-eye"></i>'+ n.clickamount + '人学过</span></div>';
	        $("#expert").prepend(rechtml);
		});
		// 专家推荐视频--------------------------------end
		// 普通视频------------------------------------start
		var menulength = menuArr.length;
		$(".djt").empty();
		for (var j=0; j<menulength; j++)
		{
			// 找到分类节点名称
			mtype = menuArr[j];
			var cnum = await countnum(mtype); 
			// 普通视频获取
			details(mtype,cnum)
		}
	}

三、项目开发环境(低版本浏览器中的兼容

1. 先下载依赖,这个不用多说

npm i es6-promise --save-dev

2. 在 /src/main.js 中引入 es6-promise 包,并使用

import promise from 'es6-promise';
 
// 兼容 Promise
promise.polyfill();

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值