如何从 Promise 对象获取 Result?

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

使用返回 Promise 对象的函数,如屏幕截图所示。我如何从这个对象获取 PromiseResult?

javascript reactjs json redux
4个回答
0
投票

您可以通过使用 .then() 来获取 Promise 的结果,如下所示:

functionThatReturnsPromise().then((result) => {
  //do something with result
})
.catch(console.error)

另一种选择是使用

async
await
,如下所示:

async function main() {
  const result = await functionThatReturnsPromise()
  // do something with result
}

main().then(console.log).catch(console.error)

如果您的环境或编译器支持顶级等待,您可以跳过

main
包装函数,如下所示:

try {
  const result = await functionThatReturnsPromise()
  // do something with result
}
catch (err) {
  console.error(err)
}

始终记住

catch
.catch
,否则你会遇到未处理的承诺拒绝


0
投票

你需要使用.then()函数 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

yourFunction().then((result) => {
  console.log(result);
});

0
投票

我更熟悉Python,但必须处理JS,这让我抓狂。 我花了很多时间寻找这个问题的答案,之前已经被问过很多次了,有很多不同的答案,有些答案相当复杂,几乎所有答案都展示了如何在异步上下文中操作结果,例如console.log(),但不知道如何将数据提取到全局或变量中。这里有一些:

JS 如何从 Promise 中提取数据

如何从已解析的 Promise javascript 中提取数据?

https://dev.to/ramonak/javascript-how-to-access-the-return-value-of-a-promise-object-1bck

在上一篇中,几位评论者就此询问了OP,说这并不是他们真正想要的答案,OP甚至用代码片段回复了一个,评论者回复了该代码片段 - 不起作用!

使用OP善意提供的玩具对象,我发现这对我有用,而且非常简单,正是我喜欢的:

var request = async () => {
    var user = await fetch('https://jsonplaceholder.typicode.com/users/1')
    .then((response) => response.json());
    return user;
};
var userData = await request('PromiseResult');
var address = userData.address;


-1
投票

如果您在浏览器中运行此代码,您会得到相同的结构:

function createPromise(){
    return new Promise((resolve)=>{
        resolve([{value:{},label:'Malmo'}])
    })
}

const rta = createPromise()
rta

要获取其数据,您可以执行以下操作:

rta.then(array => console.log(array[0].label))
© www.soinside.com 2019 - 2024. All rights reserved.