什么是父母承诺?

时间:2014-08-27 01:12:57

标签: r promise pryr

在包pryr中,有一个名为parent_promise的函数。

我知道承诺是什么,但我不熟悉父承诺这个词。此外,我不太了解文档中的示例,也许是因为我不知道自己在寻找什么。

library(pryr)
example(parent_promise)
# prnt_p> f <- function(x) g(x)
# prnt_p> g <- function(y) h(y)
# prnt_p> h <- function(z) parent_promise(z)
# prnt_p> h(x + 1)
# x + 1
# prnt_p> g(x + 1)
# x + 1
# prnt_p> f(x + 1)
# x + 1

为了帮助我更好地理解上面的例子,有人可以解释一下父承诺是什么,以及它是否/如何与常规承诺不同?

1 个答案:

答案 0 :(得分:13)

没有什么特别的东西叫做父母的承诺。&#34;只有承诺。但承诺可能会指向另一个承诺。 parent_promise函数基本上是承诺的链条,以找到第一个非承诺。

因此,当您致电f(x)时,会依次使用g(y)来调用y (promise)-> x。由于您永远不会评估y,因此该参数会作为h(z)z (promise)-> y的承诺一起传递。所以

z (promise)-> y (promise)-> x (promise)-> x+1

所以调用parent_promise(z)会在链上找到第一个非承诺对象,在每种情况下都是表达式x+1