我一直在重构一些遗留代码并找到了以下示例:
// inside other function
const isTriggerValid = await (async () => {
try {
const triggers = await db.any(getTriggerBeforeBook, { paramId });
if (!triggers || triggers.length === 0) {
return false;
}
return true;
} catch (e) {
logger.error(e);
return false;
}
})();
我想问一下,它和下面的代码有什么区别?
const isTriggerValid = async (paramId) => {
try {
const triggers = await db.any(getTriggerBeforeBook, { paramId });
if (!triggers || triggers.length === 0) {
return false;
}
return true;
} catch {
return true;
}
}
然后用 const trigger = await isTriggerValid(paramId)
调用它?
我绝对确定其中没有使用 this
关键字。
最佳答案
主要区别在于,在旧版本中,isTriggerValid
是函数结果,而在新版本中,它是一个函数,结果将被称为 trigger
。除此之外,两者都在调用相同的功能。
关于您对这个
的担忧。在这两种变体中,它都是一个继承父上下文的箭头函数,因此即使使用它,它在两者中也是相同的。
关于javascript - 等待 IIFE 结果与单独的异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70390417/