gpt4 book ai didi

javascript - promise 是闭包吗?

转载 作者:可可西里 更新时间:2023-11-01 02:31:05 25 4
gpt4 key购买 nike

closure tag wiki page ,它显示为“jQuery 本身就是一个大闭包。”

但是 promise 也是一个闭包吗?你能解释一下为什么或为什么不吗?我是这样理解闭包的:将一个函数赋值给一个变量,然后在不同的环境中复用它。 Promise 使用 $.ajax() 来做到这一点,但我在 stackoverflow 中找不到将 promise 作为闭包引入的任何地方。可能是因为还有 $.Deferred()resolve()fail() 等 promise 的其他功能来扩展其功能简单的函数传递?

最佳答案

闭包

This is how I understand closure: assign a function to a variable and reuse it with different environments.

这不是闭包的严格准确定义。

闭包是一个可以访问引用环境的函数。在 Javascript 中,这意味着一个函数由另一个函数返回并且可以访问原始函数范围。 there are other SO questions that describe this very well

闭包是可以以多种方式使用的通用结构。它们最大的好处之一是它们保护私有(private)范围,这就是为什么像 jQuery 这样的库通常被编写为闭包,这样它们就不需要在全局范围内公开它们的所有函数。

promise

Promises 是一个不同的概念。它们是一种构造异步代码的方式,可以更轻松地遵循流程。 promise 对象尤其是以清晰易读的方式为链式操作提供功能的对象。 promise 可以使用闭包来实现,但并非必须如此。例如这里是一个不使用闭包的实现:

https://gist.github.com/814052/690a6b41dc8445479676b347f1ed49f4fd0b1637

虽然 jQuery 的实现至少使用了一个闭包,但并不是真正基于它们

http://james.padolsey.com/jquery/#v=1.10.2&fn=jQuery.Deferred

结论

Promises 和 Closures 不是直接相关的概念。闭包是一种可以在 Promise 实现中使用的编程技术。最终这样实现既不是不可能也不是必须的。

关于javascript - promise 是闭包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18471826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com