Что такое обещание родителей?
В пакете 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
Нет особой вещи, называемой "родительским обещанием". Есть только promises. Но обещание может указывать на другое обещание. Функция parent_promise
в основном поднимает цепочку promises, чтобы найти первое не обещая.
Поэтому, когда вы вызываете 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