Что такое обещание родителей?

В пакете 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