Microsoft Bot Framework here的官方文档使用一系列未命名的函数显示了对话的瀑布模型,如下所示。
bot.dialog('greetings', [
// Step 1
function (session) {
builder.Prompts.text(session, 'Hi! What is your name?');
},
// Step 2
function (session, results) {
session.endDialog(`Hello ${results.response}!`);
}
]);但是,是否可以在这里使用命名函数呢?
bot.dialog('greetings', [
// Step 1
greetingPrompt(session),
// Step 2
greetingMessage(session, results)
]);我正在尝试这样做,但是在session变量的作用域上遇到了问题。在命名函数中设置的属性在外部作用域中会丢失,但在使用未命名函数时,这些属性会保留下来。有没有办法解决这个问题,或者我们被迫使用未命名的函数?这似乎是一个更混乱的解决方案,所以我希望能够清理它并重用一些代码。
发布于 2018-09-15 01:55:24
正如Claus所说,您可以使用箭头函数来清理它,即使这基本上是更改它的速记
function (session) {
greetingPrompt(session)
} 进入到这个
(session) => greetingPrompt(session)下面是一个简单的例子,说明它是什么样子的:
bot.dialog('/', [
// Step 1
(session) => choice(session),
// Step 2
(session, results) => responseResult(session, results)
]);
function choice(session){
builder.Prompts.choice(session, "Which color?", "red|green|blue", { listStyle: builder.ListStyle.button });
}
function responseResult(session,results){
session.endDialog(`Hello ${results.response.entity}!`);
}https://stackoverflow.com/questions/52319556
复制相似问题