首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bot框架瀑布中的命名函数?

Bot框架瀑布中的命名函数?
EN

Stack Overflow用户
提问于 2018-09-14 02:11:48
回答 1查看 51关注 0票数 1

Microsoft Bot Framework here的官方文档使用一系列未命名的函数显示了对话的瀑布模型,如下所示。

代码语言:javascript
运行
复制
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}!`);
    }
]);

但是,是否可以在这里使用命名函数呢?

代码语言:javascript
运行
复制
bot.dialog('greetings', [
    // Step 1
    greetingPrompt(session),
    // Step 2
    greetingMessage(session, results)
]);

我正在尝试这样做,但是在session变量的作用域上遇到了问题。在命名函数中设置的属性在外部作用域中会丢失,但在使用未命名函数时,这些属性会保留下来。有没有办法解决这个问题,或者我们被迫使用未命名的函数?这似乎是一个更混乱的解决方案,所以我希望能够清理它并重用一些代码。

EN

回答 1

Stack Overflow用户

发布于 2018-09-15 01:55:24

正如Claus所说,您可以使用箭头函数来清理它,即使这基本上是更改它的速记

代码语言:javascript
运行
复制
 function (session) {
     greetingPrompt(session)
 } 

进入到这个

代码语言:javascript
运行
复制
(session) => greetingPrompt(session)

下面是一个简单的例子,说明它是什么样子的:

代码语言:javascript
运行
复制
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}!`);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52319556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档