想象一下,我有三个函数X、Y和Z,它们都返回承诺并准备好进行链式操作。我的目标是在它们完成之后通知进度并处理错误。以下哪种写法更好,为什么(有何影响):
A.
或者
此外,以下两者有何不同:
如果
A.
function my_func(index, size){
return X
.then(Y)
.then(Z)
.then(
function(data){
var dfd = new $.Deferred();
dfd.notify("progress", index / size, 'OK');
dfd.resolve(data);
return dfd.promise();
},
function(){
return handleError(arguments, size, index);
}
);
}
或者
function my_func(index, size){
var dfd = new $.Deferred();
X
.then(Y)
.then(Z)
.then(
function(data){
dfd.notify("progress", index / size, 'OK');
dfd.resolve(data);
},
function(){
return handleError(arguments, size, index);
}
)
return dfd.promise();
}
此外,以下两者有何不同:
X.then(Y).then(Z);
并且:
$.when(X).then(Y).than(Z);
如果
$.when
部分是不必要的,那么为什么jQuery中还会存在它?