jQuery 1.5带来了新的Deferred对象和附加的方法.when,.Deferred以及._Deferred.
对于那些谁没有带使用.Deferred之前,我已经注释的源它
这些新方法有哪些可能的用法,我们如何将它们融入模式?
我已经阅读了API和源代码,所以我知道它的作用.我的问题是我们如何在日常代码中使用这些新功能?
我有一个缓冲类的简单示例,它按顺序调用AJAX请求.(下一个在上一个完成后开始).
/* Class: Buffer
* methods: append
*
* Constructor: takes a function which will be the task handler to be called
*
* .append appends a task to the buffer. Buffer will only call a task when the
* previous task has finished
*/
var Buffer = function(handler) {
var tasks = [];
// empty resolved deferred object
var …Run Code Online (Sandbox Code Playgroud) 看看这段代码:
<a href="#" id="link">Link</a>
<span>Moving</span>
$('#link').click(function () {
console.log("Enter");
$('#link').animate({ width: 200 }, 2000, function() {
console.log("finished");
});
console.log("Exit");
});
Run Code Online (Sandbox Code Playgroud)
正如您在控制台中看到的那样,"animate"函数是异步的,它"分叉"事件处理程序块代码的流程.事实上 :
$('#link').click(function () {
console.log("Enter");
asyncFunct();
console.log("Exit");
});
function asyncFunct() {
console.log("finished");
}
Run Code Online (Sandbox Code Playgroud)
按照块代码的流程!
如果我想创建我function asyncFunct() { }的这种行为,我怎么能用javascript/jquery做到这一点?我认为这是不使用的策略 setTimeout()