在jQuery中使用延迟对象的详细解决方案

在jQuery中使用延迟对象的详细解决方案
在jquery1.5版本后,延期的对象,这是延迟对象,用于处理发生在未来某个回调函数。同时,Ajax方法重写,和目前的Ajax方法返回一个延迟对象。

让我们来看一下延迟对象的用法。

1、ajax的链回调
ajax方法返回一个延迟对象,您可以直接使用这个写链。
美元。Ajax(测试。json')。做(功能(RESP){)
完成相当于成功回调,它是成功回调的参数默认参数。
警报(''成功');
}失败(函数(){)
失败等同于错误回调。
警报(错误的);
});

你也可以同时写多个回调函数,将按顺序执行
美元。Ajax(测试。json')。做(功能(RESP){)
完成相当于成功回调,它是成功回调的参数默认参数。
警报(''成功');
}。完成(函数(){)
做某事…
}。完成(函数(){)
做某事…
});

延迟对象也有一个方法。事实上,这是一种将完成和失败结合起来的方法。它接受一个或两个参数。如果有两个参数,第一个是完成方法的回调函数,第二个是失败方法的回调函数,如果只有一个参数,那就是完成方法的回调函数。
var成功=函数(){()
警报(''成功');
};

var =函数(){()
警报(错误的);
};

两个参数
美元。Ajax(测试。json')。然后(成功,错误);

参数
美元。Ajax(测试。json')。然后(成功);

jQuery也提供了一个美元。当(延迟)来执行一个或多个延迟对象回调方法。当它的参数是延迟对象时,它将在所有延迟对象异步执行之后执行相应的回调函数。
美元。当(美元。Ajax(测试。json'),美元。Ajax('demo。json')),((){函数完成){
警报(''成功');
}失败(函数(){)
警报(错误的);
});

据了解,当所有的不同步性是成功的,在做方法的回调将被执行。否则,在失败的回调方法将执行。类似地,完成方法中回调函数的默认参数与方法方法参数相同。

如果当对象只是一个普通的对象,而不是延迟对象,它会立即在做执行回调方法。回调函数的默认参数是将对象本身传递给时间方法。

当参数传递到方法是普通对象时
美元。当({测试:测试' })。做(功能(RESP){)
console.log(或试验); / /测试
}失败(函数(){)
由于传入对象不是一个延迟对象,那么它不会调用失败回调函数。
})
当需要两个或更多异步端时,回调函数被调用。同时,这些异步ajax也可能需要修改传输模式类型或传输数据数据,代码非常混乱,可读性很差。

因此,您可以重新封装Ajax以提高代码可读性。
VaR的Ajax =功能(URL、类型、参数){
返回$ ajax({
网址,
类型:类型,
数据:参数| | { }
});
};

Ajax(测试。json')。做(功能(RESP){)
警报(''成功');
}失败(函数(){)
警报(错误的);
});

连接器的学习中缺少一个始终()方法,这个参数也是一个回调函数。不像做失败了,在总的回调方法是在所有的情况下执行。

延迟对象不仅可以在jQuery的Ajax方法中使用,而且还提供了一系列接口来大大改进其通用类型。

例如,有这样一个耗时的方法。

函数A(){
函数B(){
警报(开始的);
}
setTimeout(B,3000);
}
如果希望在该方法之后执行回调,则不能使用$(),因为当$()未被延迟时,它将直接或直接调用回调函数。

这一次,使用延迟对象的其他方法,或者上述方法,进行一些重写。
函数A(){
var =延迟(DEF);创建延迟对象
函数B(){
警报(开始的);
def.resolve(延期); / /更改对象的状态
}
setTimeout(B,3000);
返回后;
}

$(a)。完成(函数(){)
警报(它是回调);
});

分析:

1)。$()方法创建一个延迟对象。

2)。Def.resolve()将改变延迟对象的状态,和延迟的对象有三种状态,未完成的,成功的和失败的。

它有两种解决方法()和拒绝(),解决方法可以将对象的状态更改为成功,而拒绝方法可以将状态更改为失败。

有超过写作问题,收益递延对象可以是外部的变化状态,所以也提供了一个承诺()方法,该方法返回一个新的延迟对象基于延迟对象,不同的是,返回的对象只能在状态观察,没有方法可以改变状态的类似的回报一个只读的延迟对象。

同样的例子也可以用这种方式重写。
函数A(){
var =延迟(DEF);创建延迟对象
函数B(){
警报(开始的);
def.resolve(延期); / /更改对象的状态
}
setTimeout(B,3000);
返回def.promise();
}

当(a)(拒绝)(已完成)(函数())拒绝/拒绝()方法无效时
警报(它是回调);
});
以上是本文的全部内容,希望能对您有所帮助,希望大家多多支持
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部