javascript - 等待 IIFE 结果与单独的异步函数

标签 javascript node.js typescript

我一直在重构一些遗留代码并找到了以下示例:

    // 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/

相关文章:

javascript - Python BeautifulSoup 抓取具有保护的网页

javascript - 如何使用 Sails.js 创建 TCP 服务器?

javascript - 如何在处理输出时暂停和取消暂停 Node 对象流

javascript - Sails.js - 如何将 js 文件注入(inject)特定路线?

typescript - 如何根据其他参数类型具有不同的回调签名?

javascript - 我们如何使用 JavaScript 将值从 PopUpWindow 传递到 Aspx 页面?

Javascript 切换点击关闭

r - 使用 R 连接到 socket.io 套接字

具有最小长度的 TypeScript 数组

angular - 如何在 Angular 4中将字符串转换为日期类类型