首页 > 解决方案 > 是否应该将函数包装为异步

问题描述

我正在处理一些代码库,async在这种情况下,我和一位同事讨论了是否将其放在函数名称之前。我会说是的,因为我们里面有一个 Promise,但这里可能是错误的。有什么建议吗?

return {
    **async ???** loadSmthForFilter: function (diseases) {
      return new Promise((resolve, reject) => {
        $.get('/api/bla', { diseases })
          .done(resolve)
          .fail(reject);
      });
    }

标签: javascriptjquerypromise

解决方案


你可以,但你不需要。这取决于您是要使用await运算符(添加async关键字)还是使用then函数链接(无需添加它)。

如果你选择你把它放在错误的地方

return {
  loadSmthForFilter: async function (diseases) {
   return new Promise((resolve, reject) => {
    $.get('/api/bla', { diseases })
      .done(resolve)
      .fail(reject);
   });
}

顺便说一句,您应该直接返回$.get,因为这是一个承诺,无需将其包装在另一个承诺中。请参阅:什么是显式承诺构造反模式以及如何避免它?


推荐阅读