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