你怎么称呼一个返回承诺的函数?
这不是笑话的开头
答案 0 :(得分:8)
目前的答案并非如此。事情的真相是没有简短的名字来回复承诺" ,这是JS社区的共识。
规范没有以特殊的方式命名它们,没有任何流行的库的文档以特殊的方式命名它们。承诺规范没有以任何特殊方式命名它们。
另一方面,如果我们检查来自Liskov and Shrira的文献分支,他们就不会,Bogle和Zondervan都不会使用除&#之外的任何字词34;得到承诺"或者"获得未来"对于它(他们使用claim
来提取值)。
如果我们检查Mark Miller's work,他也不会使用任何条款。
在其他语言中,事情并不好过。对于返回Task
s(其承诺)的方法,C#没有特殊名称。它确实有"异步功能"对于返回async / await的函数,但这只是一个严格的子集。 Scala中没有特殊名称,Python中没有特殊名称,Java中没有特殊名称,等等。 close 唯一的就是解析他们的承诺' then
回调Continuation
,但在这种情况下这几乎没有意义。
如果它让你感觉更好 - 我们也没有为返回数组的东西命名。
then
也没有制作有效的bind
。更重要的是,很少有JS开发人员甚至知道monad是什么,甚至更少关心。async
修饰符添加到语言。现在可能是事件,很多人认为setTimeout
或fs.openFile
之类的东西是异步函数。 总而言之,发明承诺的人,为JavaScript指定它们的人,编写该规范的人,规范本身,承诺库,与这些人一起编写的库以及普通用户。 t有任何特殊名称。
我认为我们可以坚持一个返回承诺的函数。
如果它让你感觉更好 - 我们不会命名"返回int"要么:)
答案 1 :(得分:7)
在javascript社区中,我发现了一个函数,它返回一个名为“#34; thenable"足够多的时间我认为" 那么"当我编码的时候。它是一个可靠的功能。
我喜欢这个名字有很多原因:
1)然后描述功能行为。如果它返回一个承诺,你可以调用"然后"在上面。
2)它的独特性。承诺并非完全是一元的,所以monad并不合适。 "异步"它更像是一类超级函数,并没有帮助描述Promise的本质。但是"然后"是唯一的Promisely。
3)我也喜欢它不会在任何地方重复承诺,(承诺,承诺,承诺功能等)正在接近IMO的循环定义。能够谷歌一个具有一个特定含义的单词真的很好。
答案 2 :(得分:2)
根据我的经验,没有单独的词来描述返回特定类型的函数。它们通常被称为"一个返回< Type> "的函数。
例如:
foo()
是一个返回 String bar()
是一个返回 Number baz()
是一个返回 Promise 在此上下文中,Promise
的使用方式与强类型语言中的界面类似。
使用的泛型类型的另一个例子是
fizz()
是一个返回集合 这并不是说有一个单词定义为"一个返回 Promise "的函数,但是那里&# 39;没有常用的术语来形容这一点。
"延期功能"有时用于描述返回promises或类似promise的对象的函数(即jQuery的延迟对象)。
返回promises的函数也可以用其他更通用的单词来描述(与正方形可以描述为矩形,平行四边形,菱形或四边形的方式大致相同)。
就我个人而言,我会使用"承诺函数",作为" promissory"的意思是:
传达或暗示承诺
我喜欢这样一个想法,即这样一个函数的返回值是"传达一个承诺"。
答案 3 :(得分:2)
我们称之为异步函数。即使函数本身没有任何异步,它至少会返回一个promise - 一个异步值。
您可以将其缩短为 async function ,尽管该术语也用于ES7语法表示法async function
,它创建隐式返回promise的函数(其代码可以使用{{1} })。
如果你想要返回monad(承诺是什么)的函数类型,你可以调用它们Kleisli arrows。但你确实问了一个[javascript]问题,而不是[类型理论],你呢?
答案 4 :(得分:1)
技术上,promise is a monad。因此,返回promise的函数是monadic function。