在调用另一个承诺之前,如何在检查一个承诺的结果后返回一个承诺。

问题描述 投票:0回答:1

我有两个函数返回承诺,我正在使用它们 独立 作为。

getLocal().then(...)

getWeb().then(...)

然而现在我遇到了一个奇怪的问题:1)我需要 第三 功能,即 返回一个承诺 2) 函数必须首先检查是否 getLocal() 有数据。如果有,那么 还愿. 3)如果 getLocal() 没有数据,那么 还愿getWeb()

希望我说得更清楚......任何帮助?

javascript
1个回答
4
投票
async function f() {
  return await getLocal() || await getWeb();
}

3
投票

你可以使用 Promise.all

Promise.all([getLocal(), getWeb()]).then(([local, web]) => {
  return local|| web
});

2
投票

希望我对你的问题理解正确,我相信应该是这么简单。

async function combinedResult() {
  return (await getLocal()) || (await getWeb());
}
const combined = await combinedResult();

1
投票

我无法想象你存储的是原始的booleans. 这里有一个 承诺 基于你想做的事情的版本。

const hasData = local => {/* your code to check if local has data */}

const getLocal = () => {/* get from local */}

const getWeb = () => {/* get from web */}

getLocal().then(local => hasData(local) ? local : getWeb())
© www.soinside.com 2019 - 2024. All rights reserved.