请帮助我,输出显示1或0的方式是什么
const checkDataFail = async () => {
const result = await conn.promise().query("SELECT * FROM data WHERE id = '10'")
.then( ([rows,fields]) => {
return rows && rows.length ? "1" : "0";
})
.catch(console.log);
return result;
}
console.log(checkDataFail());
输出:承诺{<未决>}
答案 0 :(得分:1)
这很简单,您的函数是一个异步函数,也就是说它总是返回一个Promise。
在输出到控制台之前,您必须先await
响应。
(async function() {
console.log(await checkDataFail())
})()
答案 1 :(得分:1)
async/await
是一个很好的小包装器,它有一个承诺。内部是您要处理数据的地方,因为async
函数的返回结果被包装为一个Promise。如果您确实要使用async/await
,请在其中使用诺言:
const checkDataFail = async () => {
try {
const [rows, fields] = await conn.promise().query('...'); // Promise#then()
return rows && rows.length ? "1" : "0";
} catch(e) {
console.error(e); // Promise#catch()
}
}
这将返回与上面的代码完全相同的结果,并且您可以看到它实际上只包含了几个步骤。
可以轻松找到有关Promises的更多信息,但是由于您似乎就知道了,因此知道await
函数内的async
等待 打开包装。您仍然可以使用then并捕获特定的适应和处理,但是await
等待,因此,如果您需要的只是承诺的原始结果,并且您想使用try/catch
可以。