【发布时间】:2018-12-30 01:17:16
【问题描述】:
我有一个 Async 函数,我发送到另一个等待 Promise 解决的 Async 函数,但由于某种原因它没有等待 reslove。
Router.get("/openPage/:id",async(res,req)=>{
var parms = res.getHeaderParamas();
let select = OpenTemplate(parms);
let theResualt = await select.then(data=>data);
connection.end();
res.returnJson(theResualt,"Success");
});
async function OpenTemplate(header){
return new Promise(res=>{
var query = `SELECT * FROM streamingpages WHERE ID=${header.routerParamas.id}`;
connection.connect((err)=>{res(err)});
connection.query(query,(error, results, fields)=>{
if(error) res(error)
console.log(results);
res(results);
});
})
}
我不明白我做错了什么??
【问题讨论】:
-
let theResualt = await OpenTemplate(parms);。另外,从OpenTemplate中删除async,因为它已经返回了一个Promise。async意味着只要 inside 块有任何await,它就会成为用户,否则它会强制函数无论如何返回Promise,但这不是你的情况,因为你已经返回了一个. -
connection.connect((err)=>{res(err)});一旦建立连接,承诺就会解决
标签: javascript async-await es6-promise