【问题标题】:put an async await on an export在导出上放置异步等待
【发布时间】:2021-10-20 19:18:49
【问题描述】:

我想导出一个变量,但它被导出为空。我需要这个来等待数据被插入然后它会被导出,但是我做不到

let eventGuid = 0
let INITIAL_EVENTS = [];
let datas = ""; 

function getDatas(){
  return fetch("http://localhost:3214/events")
    .then((data) => data.json())
    .catch((err) => console.log(err))
}

async function armazenar() {
  datas = await getDatas();
} 


async function api(){
  await armazenar()

  datas.forEach(element => {
    INITIAL_EVENTS.push(element)
  });

}
api()

export default INITIAL_EVENTS;

export function createEventId() {
  return String(eventGuid++)
}

【问题讨论】:

    标签: javascript asynchronous async-await


    【解决方案1】:
    async function api(){
      await armazenar()
      datas.forEach(element => {
        INITIAL_EVENTS.push(element)
      });
    
    }
    api()
    

    这个函数是一个异步函数 api(),但没有 await api()。如果这可以解决您的问题,但您应该解决它。

    【讨论】:

      【解决方案2】:

      首先,有必要对导出语句进行一些解释。导出的目的是在节点执行的构建过程中使代码可用于其他文件。 export 不会做的是将变量的值提供给其他文件中的代码。简而言之,export 不是在运行时运行的动态特性。

      我将只导出一个异步默认函数,如下所示。

      let eventGuid = 0
      
      function getDatas(){
        return fetch("http://localhost:3214/events")
          .then((data) => data.json())
          .catch((err) => console.log(err))
      }
      
      export default async function () {
        return await getDatas();
      } 
      
      
      export function createEventId() {
        return String(eventGuid++)
      }
      

      现在您需要在其他文件中导入我们的默认函数,然后执行它。请注意,这样的异步函数会返回一个 Promise。包含初始事件的数组将是后者在解析时返回的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-22
        • 2021-10-22
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2016-07-07
        相关资源
        最近更新 更多