如何从异步方法输出值

how to output value from async method

我想创建一个异步方法 returns 像这样的图像路径:

const renderMasterThumb = async (masterAssetId) => {
    const masterAsset = await getAssetByIdAsync(masterAssetId);
    const path = masterAsset.path;
    return path;
  };

然后我这样调用方法:

<img
    src={`images/${(async () => {
    await getAssetByIdAsync(collection.masterAssetId);
    })()}`}
    alt="master thumb"
/>

然而,我得到的不是图像路径,而是一个 Promise 对象:

<img src="images/[object Promise]" alt="master thumb">

有人知道如何通过调用异步方法输出值(例如 'bart.jpg')吗?

感谢您的帮助,

安东尼

你的 JSX 中的匿名 async 函数仍然是 returns 一个承诺,就像你正在调用的那个一样。你需要从根本上重构你的 React 组件。或者:

  1. 执行此操作的组件必须能够在还没有 getAssetByIdAsync 的结果时呈现(可能是一些“正在加载”占位符),或者

  2. 在该结果可用之前根本不应该呈现该组件,这意味着在父组件中调用 getAssetByIdAsync 而不是这个组件。

您需要这样做,以便有时间完成异步操作。在执行此操作的任何组件中,您都可以在对 getAssetByIdAsync 的调用中使用 .then.catch 来处理它 returns.[= 的承诺的实现或拒绝。 16=]