Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Bot框架瀑布中的命名函数?_Javascript_Node.js_Botframework - Fatal编程技术网

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

Javascript Bot框架瀑布中的命名函数?,javascript,node.js,botframework,Javascript,Node.js,Botframework,MicrosoftBot框架的官方文档显示了使用一系列未命名函数的对话瀑布模型,如下所示 bot.dialog('greetings', [ // Step 1 function (session) { builder.Prompts.text(session, 'Hi! What is your name?'); }, // Step 2 function (session, results) { session.endD

MicrosoftBot框架的官方文档显示了使用一系列未命名函数的对话瀑布模型,如下所示

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)
]);

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

正如克劳斯所说,您可以使用箭头函数来清理它,即使它基本上是用来更改的简写

 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}!`);
}

如果有的话,
s=>greingprompt
应该允许您注入一个调用另一个函数的函数,而不需要太多语法重载。