异步方式的概述
- 通过事件达到异步操作
- 通过我们最熟悉的回调
- 类promise的方式
首先我们注意到1.5版本前后的jquery有一个重要的不同
//before 1.5
var option={
type:'GET',
url:'...',
success:function(){..},
fail:function(){..},
complete:function(){..}
};
$.ajax(option);
//after 1.5
$.ajax(option)
.done(function(){..})
.fail(function(){..})
.progress(function(){..})
.always(function(){..})
1.5版本之后变成了优美的链式调用,并且可以对同一事件增加多个回调函数,原因是原生的xhr对象换成了jqxhr对象,里面有什么魔法呢?
从promise讲起
promise在javascript编程世界里可以说是大名鼎鼎,下面这段代码给出了它的简单用法。
promise(function(){..}).
then([successhandler1,successhandler2,..],
[failhandler1,failhandler2,...]);
promise为我们呈现出了异步编程的一种新模式,但它还不够漂亮,接下来我们看一看jQuery引入的deferred。
jQuery的Deferred
创建Deferred对象
var de=$.Deferred();//空的Defer