解决包含大量数据的承诺时,事件循环受阻

问题描述

我正在kubernetes环境中运行NodeJS,并且不会因为没有回答活跃性问题而被kubernetes杀死/重启我的应用程序。例如。我必须确保事件循环没有被阻止。

尤其是我正在使用PapaParse解析(有时很大)CSV文件。我正在从Minio流式传输数据,并使用PapaParse step函数逐行对其进行解析。直到这里都没问题。

最后,使用resolve返回已解析的数据。完成此操作后,将根据返回数据的大小来阻止事件循环。而且我不明白为什么。

const parseCSVfromMinio = async (filename) => {
  const data = await minioClient.getObject(
    process.env.BUCKET_NAME,filename,);

  return new Promise((resolve,reject) => {
    const result = { meta: {},data: [] };

    papaParse.parse(data,{
      complete: () => {
        resolve(result);
      },error: (err) => {
        reject(err);
      },step: (results) => {
        // gets CSV data row by row
        result.data.push(results.data);
        result.meta = results.meta;
      },});
  });
};

编辑:好像blocked-at导致我做出错误的假设。当使用静态数据而不使用async时,阻塞将转移到代码的另一部分(更合理的部分)。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...