1
我只是在节点中寻找异步/等待,看起来如果你在等待一个承诺,它会被抛弃。我想知道是否有更清晰的模式,而不是回到尝试/ catch块,我不知道?node async/await - 我需要try/catch吗?
async function foo() {
const val = await Promise.reject();
}
我只是在节点中寻找异步/等待,看起来如果你在等待一个承诺,它会被抛弃。我想知道是否有更清晰的模式,而不是回到尝试/ catch块,我不知道?node async/await - 我需要try/catch吗?
async function foo() {
const val = await Promise.reject();
}
try
/catch()
是吸尘器图案,对齐的同步和异步错误处理:
(工程在铬和Firefox开发版此刻)
function a(heads) {
if (heads) throw new Error("Synchronous error");
}
async function b() {
await Promise.resolve();
throw new Error("Asynchronous error");
}
async function main(heads) {
try {
a(heads);
await b();
} catch (e) {
console.log(e.message);
}
}
main(false); // Synchronous error
main(true); // Asynchronous error
看来这是它的方式是正确的W上。 –
你能详细说明你认为“更清洁”吗? – jib
@jib - try/catch不是干净的控制结构。被拒绝的承诺并不总是意味着一个错误,并且在一个层次上的错误并不总是在较高层次上构成错误(例如,如果您无法访问文件,'fs.access'会抛出,但这是适当的方式来检查_if_你有权访问)。 'try/catch'的意思是_unexpected_错误,不是预期的错误。 –