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");
})