想象一下,我有X
,Y
和Z
函數,所有函數都返回並準備好鏈接。我想要做的是在完成並處理錯誤後通知進度。什麼是更好的寫和爲什麼(有什麼後果):如何從JavaScript函數返回承諾?
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);
}
);
}
或
B.
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
一部分是不必要的,爲什麼doeas它在jQuery的存在呢?
評論從@Benjamin Gruenbaum評論中刪除。 –
你說得對。對不起! –