Wind.js引入可行性分析

由于JS本身的应用场景很多需要异步交互,使用习惯上会使用大量的callback,这多少会造成代码的可读性低。wind.js的作用是把原先异步的代码结构改成顺序,这的确会提升可读性,但wind.js为实现这一功能引入额外的代码:
eval(Wind.compile("async", function () {
    $await(异步方法);
    其它方法; 
}));
这是wind.js的基本结构,所有要改造的异步代码都要求改写成。如果代码中有10个异步调用就要套用10次。使用上还是比较繁琐(当然这不是wind.js的问题,语言及解析器限制)。 另外wind.js还可以解决多个异步依赖的问题,如: a操作需要b、c都完成才能继续,而b、c操作都是异步的且没有关联的,常规的可成:
function b(){
	//async
	function(){
		c();
	}

}
function c(){
	//async
	function(){
		a();
	}
}
这种做法无疑是很糟糕的,逻辑都打乱了,换成wind.js后可改成这样:
eval(Wind.compile("async", function () {
    $await(b());
    $await(c());
    a();
}));
不错,这下好多了,但还有个问题,b、c是没有关联的,也就是b、c可以同时执行,而上面的代码却是分步的,一个更简单有效的做法是用JQ的deferred,如下:
var bDfd=$.Deferred();
var cDfd=$.Deferred();
function b(){
	//async
	function(){
		bDfd.resolve();
	}
	return bDfd.promise();
}
function c(){
	//async
	function(){
		cDfd.resolve();
	}
	return cDfd.promise();
}
$.when(bDfd&&cDfd).done(function(){
	a();
});
逻辑清楚,代码可读性也很高。 所以如果代码不存在很多层的异步嵌套调用,建议不要引入wind.js,可以考虑从以下几个方面入手解决: 1.提升开发人员的技能,做JS开发异步回调是基础,不要畏惧; 2.优化代码结构及方法命名; 3.使用JQ的deferred。

转载于:https://my.oschina.net/gudaoxuri/blog/340921

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值