当前位置: 首页 > 知识库问答 >
问题:

回电还是答应?[副本]

景温书
2023-03-14

在使用javascript异步错误捕获机制时,我最后问自己,使用Promission而不是回调有什么区别,而且Promission的语法可能更简单。

例如,让我们考虑一下

        function setPromise() {
            var message = "awesome";
            var deferred = new $.Deferred();
            setTimeout(function(){deferred.resolve(message)},3000);
            return deferred.promise();
        }

        var promise = setPromise();

        promise.done(function (message) {
            console.log("promise done with message : " + message);
        });

而且

        function setCallback(doneCallback) {
            var message = "awesome";
            setTimeout(function(){doneCallback(message)},3000);
        }

        setCallback(callback)

        function callback(message) {
            console.log("callback done with message : " + message);
        }

两者都充当闭包,都允许返回参数,等等。

那么区别在哪里呢?

共有1个答案

子车征
2023-03-14

promise建立在回调的基础上。后者更原始,更通用,当你需要做一些复杂的事情时需要做更多的工作。

就你的例子而言,它们做的事情几乎是一样的。但是,假设您希望同时解决三件事情(假设AJAX同时请求三个资源),并在所有这三件事情完成后继续。这是微不足道的promise,因为基本上没有改变;但是对于回调,您需要设置一些标志/计数器,并自己识别成功和失败状态--还有更多的工作要做。

 类似资料:
  • 编辑:我的问题是ListView有没有比RecyclerView更有优势的地方?如果不是,那么为什么谷歌没有将它标记为贬值。此外,虽然我们可以在库中找到ListView,但如果我们创建了一个新的Project,但要使用RecyclerView,则必须使用另一个依赖项。

  • 问题内容: 我发现自己同意返回接口而不是具体的类。 原因很简单,我要松散耦合。 但是还会有其他影响或权衡吗? 问题答案: 对于List或ArrayList之类的类型,不应进行任何编译,并且应将List提升Code返回到接口。 如果这是通过诸如CopyOnWriteArrayList之类的并发包进行的,并且您使用的是addIfAbsent之类的方法(未在List接口中定义),您将发现自己受到限制。

  • 我发现自己同意返回一个接口,而不是一个具体的类。

  • 在构建API时,编写接口代码是一个很好的实践,因此返回CompletionStage似乎是一个最好的方法。然而,我意识到我碰巧总是在获得CompletionStage之后调用.ToCompletableFuture。在这种情况下,推荐的方法是什么?

  • 为了使用JWT保护REST API,根据一些材料(如本指南和本问题),JWT可以存储在本地存储或Cookies中。根据我的理解: localStorage受XSS限制,通常不建议在其中存储任何敏感信息 对于cookie,我们可以应用“httpOnly”标志,以降低XSS的风险。然而,如果我们要从后端的Cookies中读取JWT,那么我们将受到CSRF的约束 因此,基于上述前提,最好将JWT存储在C

  • 假设我有一个方法将只读视图返回到成员列表中: 进一步假设客户机所做的只是立即对列表进行一次迭代。也许是为了把玩家放进一个JList或者别的什么。客户端没有存储对列表的引用以供以后检查! 对于这种常见的场景,我是否应该返回一个流呢? 还是返回流在Java中不是惯用的?流被设计成总是在创建它们的同一个表达式中“终止”吗?