代码之家  ›  专栏  ›  技术社区  ›  ololo

使用异步函数查找满足条件的数组的第一个元素

  •  0
  • ololo  · 技术社区  · 4 年前

    我有一个很奇怪的问题。 我希望找到满足条件的数组的第一个元素,但find函数必须标记为async,因为执行搜索需要承诺。

    请注意,下面的代码只是一个示例。没有显示执行异步搜索的实际代码。但下面的内容与我在find函数中打算做的完全相似

    下面是示例代码

    async testForVideo() {
        let media=["sampleMedia.png"];
        let video = media.find(async (x) => await x.includes(".mp4"));
        console.log(`Retrived Video=${video}`);
    }
    

    对我来说,我不断得到的回应是

    Retrived Video=sampleMedia.png
    

    这太奇怪了。我正期待着 undefined 作为正确的结果,为什么它会返回错误的值呢?

    我正期待着

    Retrived Video=undefined
    

    如果您有任何关于这种情况的想法,我们将不胜感激。

    非常感谢。

    1 回复  |  直到 4 年前
        1
  •  1
  •   Anatoly    4 年前

    find 不支持 async 回调所以在你的情况下,回调总是会返回一个承诺 trueish 对于 发现 方法,以便返回数组的第一个元素。

    推荐文章