Python、Gradio、promise 链、.then()、理解传递和操作的数据

问题描述 投票:0回答:1

好吧,我真的很难找到清晰的文档来帮助我理解这里发生的事情。

gen_events.append(shared.gradio['Generate'].click(
   ui.gather_interface_values, [shared.gradio[k] for k in shared.input_elements], shared.gradio['interface_state'])
.then(lambda x: (x, ''), shared.gradio['textbox'], [shared.gradio['Chat input'], shared.gradio['textbox']], show_progress=False)
.then(chat.generate_chat_reply_wrapper, shared.input_params, shared.gradio['display'], show_progress=False)
.then(chat.save_history, shared.gradio['mode'], None, show_progress=False)
   )

真的,我只需要知道“then”块之间的相互作用。他们是独立运作的吗?或者第一个函数是否对以下输入进行操作,然后输出作为下一个 then 块的输入..但这没有意义,因为下一个第一个函数对以下输入进行操作,而不是对上一个函数的输出进行操作..

当我搜索语法时,.then 会引导我找到 JS 示例,但这是 python,它有自己的 Promise 链实现,所以为什么会这样呢?

我不知道,我真的很感激一些提示或链接或任何东西。我不认为这是特定于 Gradio 的,但也许是这样?

python promise method-chaining gradio
1个回答
0
投票

是的,这确实有点令人困惑,但是 .then 与您可以在 JavaScript 中找到的 Promise 链非常相似,它是 Gradio 的一部分,而不是 Python。它只是基本上作为副作用(输出更改值)完成输入和输出,然后将该特定块的所有输入和输出传递到下一个函数。这与 javascript 不同,因为除了从函数输出新值之外,你无法真正影响,所以它肯定是一个灰色区域。

© www.soinside.com 2019 - 2024. All rights reserved.