Async/Await 错误返回 Promise { <pending> }
Async/Await Error returned Promise { <pending> }
请帮帮我,输出显示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());
输出:Promise { < pending> }
这很简单,你的函数是一个异步函数,也就是说它总是returns一个承诺。
您必须 await
在输出到控制台之前做出响应。
(async function() {
console.log(await checkDataFail())
})()
async/await
是一个很好的小包装,围绕着一个承诺。内部是您要处理数据的地方,因为来自 async
函数的 return 被包装到一个 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()
}
}
这将 return 与您上面的代码完全相同的结果,正如您所看到的,它实际上只结合了几个步骤。
关于 Promises 的更多信息很容易找到,但由于看起来您知道 then,所以知道 async
函数中的 await
waits为 promise 结果并解压它。您仍然可以使用 then 和 catches 进行特定的调整和处理,但是 await
waits 所以如果您需要的只是承诺的原始结果并且您想使用 try/catch
阻止你可以。
请帮帮我,输出显示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());
输出:Promise { < pending> }
这很简单,你的函数是一个异步函数,也就是说它总是returns一个承诺。
您必须 await
在输出到控制台之前做出响应。
(async function() {
console.log(await checkDataFail())
})()
async/await
是一个很好的小包装,围绕着一个承诺。内部是您要处理数据的地方,因为来自 async
函数的 return 被包装到一个 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()
}
}
这将 return 与您上面的代码完全相同的结果,正如您所看到的,它实际上只结合了几个步骤。
关于 Promises 的更多信息很容易找到,但由于看起来您知道 then,所以知道 async
函数中的 await
waits为 promise 结果并解压它。您仍然可以使用 then 和 catches 进行特定的调整和处理,但是 await
waits 所以如果您需要的只是承诺的原始结果并且您想使用 try/catch
阻止你可以。