我在代码中设置承诺时遇到了问题。这就是我现在实施的:
let promise = new Promise(function(resolve, reject){
ATVStatement();
let isdone = true;
if(isdone){
resolve();
}else{
reject();
}
})
promise.then(CustomMessage());
我得到的问题是,我很确定承诺不起作用。如果有人能发现我正在做的错误,我会非常感激。
以下是正在使用的两个函数的代码:
function ATVStatement() {
request = new Request("select distinct(\"Product Name\") from SPA_Data_Feeds where \"Strategic Priority\" = 'Accelerate to Value (LD)'",
function(err, rowCount, rows)
{
console.log(rowCount + ' row(s) returned');
}
);
//var result = "";
var count = 0
request.on('row', function(columns) {
columns.forEach(function(column) {
console.log("%s\t", column.value);
result+= column.value + "\t\n"; //result is a global variable
count++;
});
});
connection.execSql(request);
}
function CustomMessage(){
console.log('here')
var customMessage = new builder.Message(session)
.text("### Here is a list of the ATV Compounds: \n" + "> %s ", result)
.textFormat("markdown")
.speak("Here is what I found for \'%s\'.", session.message.text)
.textLocale("en-us");
session.send(customMessage); }
答案 0 :(得分:3)
好的,现在我们更好地理解代码了(感谢更新),我们需要修改ATVStatement以返回一个promise并在查询完成后解析它。
我们将上面的代码更改为:
($('form').submit())
你知道,ATVStatement实际上是异步的。