好吧,我真的很难找到清晰的文档来帮助我理解这里发生的事情。
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 的,但也许是这样?
是的,这确实有点令人困惑,但是 .then 与您可以在 JavaScript 中找到的 Promise 链非常相似,它是 Gradio 的一部分,而不是 Python。它只是基本上作为副作用(输出更改值)完成输入和输出,然后将该特定块的所有输入和输出传递到下一个函数。这与 javascript 不同,因为除了从函数输出新值之外,你无法真正影响,所以它肯定是一个灰色区域。