gpt4 book ai didi

JavaScript Promise 设置

转载 作者:行者123 更新时间:2023-12-02 23:13:09 25 4
gpt4 key购买 nike

我是一位经验丰富的工程师,但 JavaScript 中的 Promise 对我来说仍然非常令人困惑。最重要的是,我正在进行的项目使用 Flow 来输入 JavaScript。

因此,我有一个函数 A,它返回从网络请求返回的 URL 列表。这个函数实际上返回一个 promise ,并且它是异步的。 (返回类型为 Promise<Array<URL>> )

现在,我需要添加另一个也返回 URL 列表的请求。与之前的处理相同,我们将其称为函数 B。(相同的返回类型 Promise<Array<URL>> )。

然后原始函数的调用者期望返回一个 promise 。所以,我正在考虑创建一个函数 C,它首先调用函数 B,然后根据函数 B 的结果,它要么返回该 Promise,要么调用函数 A 并返回它的 Promise。

我必须保持一切异步,但我一生都无法弄清楚这一点。如何编写 C 函数?

请停下来!我希望这是有道理的。

附注有点像这样:

async getAllURLs(): Promise<?Array<SignedURL>> 
{

let result: Promise<?Array<SignedURL>> = Promise.resolve([]); // wrong

let res1 = this.getBetterUrls().then((urls) =>
{
if (urls && urls.length > 0)
{
result = res1;
}
else
{
let res2 = this.getOldUrls().then((lesserUrls) =>
{
if (lesserUrls && lesserUrls.length > 0)
{
result = res2;
}
});
}
});

return result; // wrong
}

最佳答案

我想这会成功:

async getAllURLs(): Promise<Array<SignedURL>> {
const betterUrls = await this.getBetterUrls();

if (betterUrls && betterUrls.length > 0) { return betterUrls; }

const lesserUrls = await this.getOldUrls();

return lesserUrls && lesserUrls.length > 0 ? lesserUrls : [];
}

关于JavaScript Promise 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57264055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com