Node.js wit操作中的异步函数
我目前正在使用Node.js wit操作中的异步函数,node.js,asynchronous,callback,wit.ai,Node.js,Asynchronous,Callback,Wit.ai,我目前正在使用wit.ai开发一个机器人。我对node.js非常陌生。基本上,我遵循的是node-witlib提供的指南。我通过以下方式构造我的wit对象: const wit = new Wit({ accessToken: WIT_TOKEN, actions, logger: new log.Logger(log.INFO) }); 在我的行动中,我有以下几点: const actions = { send({sessionId}, {text}) { //my
wit.ai
开发一个机器人。我对node.js非常陌生。基本上,我遵循的是node-wit
lib提供的指南。我通过以下方式构造我的wit
对象:
const wit = new Wit({
accessToken: WIT_TOKEN,
actions,
logger: new log.Logger(log.INFO)
});
在我的行动中,我有以下几点:
const actions = {
send({sessionId}, {text}) {
//my sending action goes here.
},
firstaction({context, entities,sessionId}) {
var data = async_function();
context.receiver = data;
return context;
}
}
问题是,在async_函数
之后出现的任何内容都将首先执行。我试着让async\u函数
返回一个承诺。但是,这不起作用,因为在节点wit
库中我的第一个操作之后出现的任何内容都将首先执行,而无需等待上下文返回。我不想用库修改节点
任何能解决我的问题的想法都将不胜感激 您可以使用异步库进行异步调用
您可以使用异步库进行异步调用
谢谢你的推荐!我只是想知道调用我的firstaction的函数是否要等待瀑布结束?我不确定您的代码是如何运行的,firstaction()
是一个函数调用,您要返回上下文吗?请发布firstaction()
函数定义和async\u函数()
定义。是的,firstaction()是一个返回上下文的函数调用。不管怎样,我用你的方法解决了。它需要对我的代码进行一些重构。非常感谢你!。太好了,兄弟#祝您快乐,为您的参考!我只是想知道调用我的firstaction的函数是否要等待瀑布结束?我不确定您的代码是如何运行的,firstaction()
是一个函数调用,您要返回上下文吗?请发布firstaction()
函数定义和async\u函数()
定义。是的,firstaction()是一个返回上下文的函数调用。不管怎样,我用你的方法解决了。它需要对我的代码进行一些重构。非常感谢你!。太好了,兄弟#快乐编码
const async = require('async')
const actions = {
send({sessionId}, {text}) {
//my sending action goes here.
},
firstaction({context, entities,sessionId}) {
async.waterfall([function(callback) {
var d = async_function();
// if err pass it to callback first parameter
// return callback(err)
callback(null,d);
}], function(err, result) {
if(err) {
return err;
}
var data = result;
context.receiver = data;
return context;
})
}
}