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

В упаковке 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

Другие вопросы по тегам