如何从JavaScript函数返回承诺?

姆诺沃特卡

想象一下,我有XYZ功能,所有返回的承诺,并准备链。我要做的是在进度完成并处理错误后通知进度。有什么更好的写作方式以及原因(后果是什么):

一种。

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);

如果$.whenpart是不必要的,为什么在jQuery中根本没有它呢?

本杰明·格伦鲍姆(Benjamin Gruenbaum)

后者是不必要的。这只是多余的东西。$.when对于将值转换为承诺和进行汇总很有用。

这是一个平均$.when用例:

$.when($.get(...),$.get(...)).then(function(firstResult,secondResult){
     // access both results here
}); 

您可以在此处使用两个结果,两个都已完成。

至于第一个问题-基本上是B。第一个选择是递延反模式,最好避免。有关原因的信息,请参见该问题链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JavaScript的承诺和函数的返回差异

来自分类Dev

如何返回嵌套承诺?

来自分类Dev

如何获取返回承诺的异步函数的返回值

来自分类Dev

如何基于函数的参数推断承诺的返回类型?

来自分类Dev

如何从承诺函数返回值

来自分类Dev

从函数返回承诺值

来自分类Dev

在if()函数中承诺在Javascript中返回未定义

来自分类Dev

如何调用从其他文件返回承诺的函数

来自分类Dev

Javascript异步函数返回然后捕获承诺?

来自分类Dev

TypeScript:如何正确键入一个接受承诺并按原样返回该承诺的函数

来自分类Dev

执行函数的值返回承诺

来自分类Dev

如何获取返回承诺的异步函数的返回值

来自分类Dev

如何从调用AngularJS中的$ http.get的函数返回承诺?

来自分类Dev

如何使函数从cordova-plugin-file-transfer上传返回承诺

来自分类Dev

如何同时从函数返回值和承诺?

来自分类Dev

还不是函数的返回承诺

来自分类Dev

函数未按承诺返回

来自分类Dev

返回承诺的函数的串行执行

来自分类Dev

如何测试返回承诺 $q 的函数?

来自分类Dev

如何处理函数的承诺或变量返回

来自分类Dev

如何在返回新承诺的函数中使用另一个承诺?

来自分类Dev

如何处理不总是返回承诺的函数?

来自分类Dev

如何将承诺 then()/catch() 结果返回给包含承诺的函数?

来自分类Dev

Javascript:编写返回承诺的函数

来自分类Dev

嵌套的 Javascript 如何返回“传递”承诺?

来自分类Dev

Javascript 承诺,返回的 then 和 catch 方法的承诺

来自分类Dev

多个函数返回承诺

来自分类Dev

如何在此函数中返回值而不是承诺?

来自分类Dev

如何从量角器的外部函数返回整数作为承诺?

Related 相关文章

热门标签

归档