新浦京娱乐场官网-301net-新浦京娱乐www.301net
做最好的网站

现在的ajax方法返回的是一个deferred对象

 deferred对象是jQuery对Promises接口的完结。它是非同步操作的通用接口,能够被当作是多个守候完毕的天职,开采者通过有个别透过的接口对其展开设置。事实上,它扮演代理人(proxy)的角色,将这几个非同步操作包装成全部有个别统一性格的目的,标准例证正是Ajax操作、网页动画、web worker等等。

jQuery的具有Ajax操作函数,默许重临的便是一个deferred对象。

在jquery1.5自此的本子中,参加了一个deferred对象,也正是延迟对象,用来管理以往某不常间点发出的回调函数。同有时间,还改写了ajax方法,今后的ajax方法重回的是多少个deferred对象。

那就来探视deferred对象的用法。

1.ajax的链式回调

// ajax方法返回的是一个deferred对象,可以直接使用链式写法
$.ajax('test.json').done(function(resp){
// done 相当于success回调,其中默认的参数为success回调的参数
alert('success');
}).fail(function(){
// fail 相当于error回调
alert('error');
}); 

仍是可以够况且写两个回调,会规行矩步顺序依次实践

$.ajax('test.json').done(function(resp){
// done 相当于success回调,其中默认的参数为success回调的参数
alert('success');
}).done(function(){
// do something...
}).done(function(){
// do something...
}); 

deferred对象还会有三个then方法,其实它是一个组成done和fail的章程,它承受一到两个参数,如果有八个参数,那么首先个便是done方法的回调函数,第三个是fail方法的回调函数。借使唯有三个参数,那正是done方法的回调函数。

var success = function(){
alert('success'); 
};
var error = function(){
alert('error');
};
// 两个参数
$.ajax('test.json').then(success, error);
// 一个参数
$.ajax('test.json').then(success); 

jQuery还提供了几个$.when(deferreds)的主意来施行多少个或七个延迟对象的回调函数,当它的参数是延迟对象时,它会在装有延迟对象表示的异步施行完后再实施相应的回调函数

$.when($.ajax('test.json'), $.ajax('demo.json')) .done(function(){
alert('success'); 
}).fail(function(){
alert('error');
}); 

很好通晓,唯有当有着异步都工作有成时,才会施行done方法中的回调,不然会实行fail方法中的回调,同样好精通的是的done方法中回调函数的私下认可参数数量则和when方法参数数量同样。

而一旦when方法中流传的只是平凡对象,不是deferred对象时,会马上实践done方法中的回调,回调函数的暗许参数为流传when方法的目标自己。

// 当传入when方法的参数只是普通对象时
$.when({test: 'test'}).done(function(resp){
console.log(resp.test); // 'test' 
}).fail(function(){
// 由于传入的对象不是deferred对象,那么就不会调用fail中的回调了 
}) 

当你须求四个乃至越多的异步甘休后才调用回调函数,相同的时间这个异步ajax恐怕还索要修改传输格局type恐怕传数据data时,代码就呈现很乱,可读性非常不佳。

由此就可以对ajax进行重新卷入,进步代码可读性

var ajax = function(url, type, param){
return $.ajax({
url: url,
type: type,
data: param || {} 
}); 
};
ajax('test.json').done(function(resp){
alert('success');
}).fail(function(){
alert('error');
});

如上所述是笔者给大家介绍的jQuery中的deferred对象的选用(一)的相干文化,希望对大家有所支持,假设大家有另外疑问请给自己留言,小编会及时还原我们的。在此也特别谢谢大家对剧本之家网站的支撑!

你只怕感兴趣的篇章:

  • jQuery中deferred对象使用方法详解
  • jQuery通过deferred对象管理ajax异步
  • jQuery的promise与deferred对象在异步回调中的成效
  • jQuery.deferred对象使用详解
  • 以jQuery中$.Deferred对象为例讲明promise对象是哪些管理异步难题
  • jQuery的deferred对象详解
  • jQuery之Deferred对象详解
  • jquery基础教程之deferred对象使用办法
  • 应用jQuery的deferred对象达成异步按顺序加载JS文件
  • jQuery的deferred对象使用详解
  • 在jQuery1.5中选取deferred对象 着放大镜看Promise
  • 在jQuery 1.5中利用deferred对象的代码(翻译)
  • jQuery的deferred对象使用详解

本文由新浦京娱乐场官网-301net-新浦京娱乐www.301net发布于301net网站建设,转载请注明出处:现在的ajax方法返回的是一个deferred对象

您可能还会对下面的文章感兴趣: