[英]How to return a promise from JavaScript function?
想象一下,我有X
, Y
和Z
功能,所有返回的承诺和准备连锁。 我想要做的是在完成后通知进度并处理错误。 什么是更好的写作和为什么(后果是什么):
一种。
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
.when部分是不必要的,为什么它存在于jQuery中呢?
主要的区别是,你是依靠X
是有方法的对象then
。 将非延迟/ promise对象传递给$.when
会将其视为已解决的Deferred
,我个人更喜欢这样做,因为它会使函数之间的耦合更松散。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.