Javascript 如何构造函数以返回承诺

Javascript 如何构造函数以返回承诺,javascript,function,promise,Javascript,Function,Promise,我试图从validateKey返回真/假值,但在解决承诺时遇到问题。我已经尝试了返回新承诺,但有点卡住了 server.js app.get("/node/api/mssql/test", function(req, res) { console.log(session.validateKey(req)) // logs: Promise { <pending> }, would like to log: true or false }) 如何从validateKey返回包含响

我试图从
validateKey
返回真/假值,但在解决承诺时遇到问题。我已经尝试了
返回新承诺
,但有点卡住了

server.js

app.get("/node/api/mssql/test", function(req, res) {
  console.log(session.validateKey(req)) // logs: Promise { <pending> }, would like to log: true or false
})

如何从
validateKey
返回包含
响应[0]['']
结果的承诺?

您的函数validateKey已经返回了承诺。问题是你如何使用它

session.validateKey(req).then((validation) => {
  console.log(validation) //true or false

  //if you want to return this value
  return res.send({result: validation});
});

只需使用异步中间件:

app.get("/node/api/mssql/test", async function(req, res) {
 const isValid = await session.validateKey(req));
 console.log(isValid);
 res.end(isValid ? "Logged in!" : "Failed");
})

我想链接它,所以如果是真的,那么运行另一个函数。这里有更多的上下文:你可以链接它,问题是如果你把一些东西链接到
然后
你将无法调用
返回res.send…
然后
里面,如果它没有链接到
然后
(绕口令)@Matthew:
会话。validateKey(req)。然后(valid=>{if(valid){otherFunction();}}});
(当然还有错误处理)。正如yBrodsky所说,您的validateKey已经正确地返回了一个承诺,尽管您的嵌套比必需的多/idiomatic.FWIW:
app.get("/node/api/mssql/test", async function(req, res) {
 const isValid = await session.validateKey(req));
 console.log(isValid);
 res.end(isValid ? "Logged in!" : "Failed");
})