promise的使用

首先我们用js语法封装一个异步获取图片的函数

function loadImg(src,callback,fail){
	var img = document.createElement('img');
    
    img.onload=function() {
    	callback(img) //成功加载时...
    }
   
    img.onerror= function() {
    	fail() //没有加载时...
    }
    img.src = src;
}

调用该函数


var src="images/1.jpg"

loadImg(src,function(img) {
   console.log(img.width)
},function(){
   console.log('fail')
})

现在我们用promise改造这个函数

安照基本语法我的思路为:

 1. new Promise实例,而且要return

 2.new Promise时要传入函数,函数有resolve 和reject两个函数

 3. 成功时执行resolve()失败时执行reject()

 4.then 监听结果

function loadImg(src) {
	const promise = new Promise(function (resolve,reject) {
		var img = document.createElement('img');
		img.onload = function() {
			resolve(img)
		}
		img.onerror = function() {
			reject()
		}
	})
	return promise;
}

var src="images/1.jpg";

var result = loadImg(src);

result.then(function(img){
 console.log(img.width); //此处放成功的回调
},function(){
 console.log('fail'); //此处放失败信息
})

result.then(function(img){
 console.log(img.height);
},function(){
 console.log('fail');
})

下面是关于promise的异常捕获

异常捕获的规定只接收一个参数,最后统一用catch捕获异常

把上面栗子的then部分改为

result.then(function (img) {
	console.log(img.width)//之前then接收两个参数,一个成功后的回调和一个失败后的回调,但此处只接收了成功的回调
}).then(function(){
	console.log(img.height)
}).catch(function(ex){//catch捕获了回调的异常
	console.log(ex)
})

可以看到有点像js原生捕获异常的try..catch方法

下面是多个串联

比如我们定义了多个图片

var src1 = "images/1.png";
var result1 = loadImg(src1);
var src2 = "images/2.png";
var result2 = loadImg(src2)

//链式操作

result1.then(function (img1) {
   console.log("第一个图片加载完成..")
   return result2;//返回result2然后才能紧接着调用result2
 }).then(function (img2) {
    console.log("第二个图片加载完成..")
 }).catch(function (ex) {
    console.log(ex)
 })

下面是Promise.all和Promise.race

Promise.all接收一个promise对象的数组
 等到全部完成之后,统一执行success

 栗子

Promise.all([result1,result2]).then(datas => {//接收到的datas是一个数组,依次包含多个promise返回的内容
 	console.log(datas[0]);
 	console.log(datas[1]);
 })
Promise.race接收一个包含多个promise对象的数组
 只要一个完成,就执行success

 栗子

Promise.race([result1,result2]).then(data => {//接收到的datas是一个数组,依次包含多个promise返回的内容
 	console.log(data);
 
 })


内容概要:本文探讨了在MATLAB/SimuLink环境中进行三相STATCOM(静态同步补偿器)无功补偿的技术方法及其仿真过程。首先介绍了STATCOM作为无功功率补偿装置的工作原理,即通过调节交流电压的幅值和相位来实现对无功功率的有效管理。接着详细描述了在MATLAB/SimuLink平台下构建三相STATCOM仿真模型的具体步骤,包括创建新模型、添加电源和负载、搭建主电路、加入控制模块以及完成整个电路的连接。然后阐述了如何通过对STATCOM输出电压和电流的精确调控达到无功补偿的目的,并展示了具体的仿真结果分析方法,如读取仿真数据、提取关键参数、绘制无功功率变化曲线等。最后指出,这种技术可以显著提升电力系统的稳定性与电能质量,展望了STATCOM在未来的发展潜力。 适合人群:电气工程专业学生、从事电力系统相关工作的技术人员、希望深入了解无功补偿技术的研究人员。 使用场景及目标:适用于想要掌握MATLAB/SimuLink软件操作技能的人群,特别是那些专注于电力电子领域的从业者;旨在帮助他们学会建立复杂的电力系统仿真模型,以便更好地理解STATCOM的工作机制,进而优化实际项目中的无功补偿方案。 其他说明:文中提供的实例代码可以帮助读者直观地了解如何从零开始构建一个完整的三相STATCOM仿真环境,并通过图形化的方式展示无功补偿的效果,便于进一步的学习与研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值