【问题标题】:Wait for a variable to be read before removing whitespace?在删除空格之前等待读取变量?
【发布时间】:2021-12-04 02:29:30
【问题描述】:

我正在尝试从 typescript 中的字符串中删除空格,当我刷新页面或从 url 重新加载它时,其中一个变量会引发一个大错误,而不是当我从我网站上的另一个页面加载它时。 art.title 未定义,所以我需要等待页面加载后才能运行替换代码。

我尝试使用此代码仅在准备好时定义我想要的变量,但如果它在条件中定义,我将无法使用该变量。

这是我尝试定义我想要的 titleString 变量的代码:

function titleNoWhiteSpace() {
      if (typeof art.title != 'undefined') {
        const tempTitle = art.title.replace(/\s+/g, '');
        return tempTitle;
      } else {
        setTimeout(titleNoWhiteSpace, 300);
      }
    }

   const titleString = titleNoWhiteSpace();

但是当我稍后尝试使用 titleString 时,我收到以下错误,因为该变量尚未定义!

“'{ titleString: string | undefined; }' 类型的参数不能分配给 'string' 类型的参数”

如果我只是尝试直接替换 art.title 中的空格,以下是代码抛出的错误:

"Uncaught TypeError: Cannot read properties of undefined (reading 'replace')"

艺术类型在这里声明:

export interface Art {
  uri: string | undefined;
  mint: string | undefined;
  link: string;
  title: string;
  artist: string;
  seller_fee_basis_points?: number;
  creators?: Artist[];
  type: ArtType;
  edition?: number;
  supply?: number;
  maxSupply?: number;
}

【问题讨论】:

    标签: javascript typescript types


    【解决方案1】:

    您编写的函数titleNoWhiteSpace 不会像我认为您希望的那样等待标题被定义。

    该函数总是立即返回一个结果(就像所有 JavaScript 函数一样),要么返回去空格的标题,要么返回 undefined。在某些时候会生成去间隔的标题,但结果将只是在您获得不想要的 undefined 值后发生的短暂未存储值。

    获得那种等待直到标题被定义的效果的唯一方法是使用 Promise 或回调函数。如果没有看到最终应该使用标题文本的上下文,我无法更具体。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 2017-09-16
      • 2020-01-05
      • 2017-04-05
      • 2016-09-27
      • 1970-01-01
      相关资源
      最近更新 更多