您可以通过使用 .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
,否则你会遇到未处理的承诺拒绝。
你需要使用.then()函数 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then
yourFunction().then((result) => {
console.log(result);
});
我更熟悉Python,但必须处理JS,这让我抓狂。 我花了很多时间寻找这个问题的答案,之前已经被问过很多次了,有很多不同的答案,有些答案相当复杂,几乎所有答案都展示了如何在异步上下文中操作结果,例如console.log(),但不知道如何将数据提取到全局或变量中。这里有一些:
如何从已解析的 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;
如果您在浏览器中运行此代码,您会得到相同的结构:
function createPromise(){
return new Promise((resolve)=>{
resolve([{value:{},label:'Malmo'}])
})
}
const rta = createPromise()
rta
要获取其数据,您可以执行以下操作:
rta.then(array => console.log(array[0].label))