使用Jscex优化Ajax操作体验

转帖|其它|编辑:郝浩|2011-09-30 15:51:49.000|阅读 493 次

概述:本文主要介绍使用Jscex优化Ajax操作体验,希望对大家有帮助。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  Ajax是异步的,这是它的优势,但是写出的代码却不那么美观,处处的回调函数总让人不爽,碰到嵌套的情况则会让人抓狂了。

  设想这样的情况,一个Ajax请求需要一个参数data,而这个参数是另外一个Ajax请求的结果。按照一般的写法(Ajax使用了jQuery):

   $(function(){
$.ajax({
url:"/getFirstData",
success:function(firstData){
//firstData:第一个结果

   //第二次请求
$.ajax({
url:"/getSecondData",
data:{data:firstData},
success:function(secondData){
//这里猜得到第二次请求的值
}
})
}
})
})

  看起来也可以接受,但是如果第一个结果不符合要求需要重新获取呢?修改之后的代码简直无法想象。

  Jscex是一个优秀的异步JS库,借助它我们可以写出“顺序”的代码。

  首先我给jQuery.ajax写一个Jscex适配器

  jQuery.ajaxJscex = function (option) {
var delegate = {
"onStart": function (callback) {
jQuery.extend(option, {
success: function (data) {
callback("success", data);
},
error: function () { callback("failure"); }
});
$.ajax(option);
}
};
return new Jscex.Async.Task(delegate);
}

  然后上面的逻辑代码就可以简化为

   var task = eval(Jscex.compile("async",function(){
//第一结果
var firstData = $await($.ajaxJscex({
url: '/getFirstData'
}));
//第二结果
var secondData = $await($.ajaxJscex({
url: '/getFirstData',
data:{data:firstData}
}));
}));
task().start();

  


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP