通过promise 可以实现异步链式调用,如我们可以添加动画队列逐个按照顺序执行,我们还可以添加一些异步的方法逐步按照顺序执行。
下列示例中我们实现500毫秒后,调用第一个then中的callback函数,1000毫秒后调用第二个then中的callback函数
function f1(){
var dfd=$.Deferred();
console.log(new Date().getTime());
setTimeout(function(){
dfd.resolve();
console.log('first function');
},500);
return dfd.promise();
}
f1().then(function(){
console.log(new Date().getTime());
var dfd=$.Deferred();
setTimeout(function(){
dfd.resolve();
console.log('secend function');
},500);
return dfd.promise();
}).then(function(){
console.log(new Date().getTime());
});
当我们直接执行promise的then方法的链式调用时,则可将then中的callback函数封装成数组,最后统一调用
function f1(){
var dfd=$.Deferred();
console.log(new Date().getTime());
setTimeout(function(){
dfd.resolve();
console.log('first function');
},500);
return dfd.promise();
}
f1().then(function(){
console.log(new Date().getTime());
}).then(function(){
console.log(new Date().getTime());
});