gpt4 book ai didi

javascript - async/await 总是返回 promise

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

我正在尝试异步/等待功能。我有这样的代码模仿请求:

const getJSON = async () => {
const request = () => new Promise((resolve, reject) => (
setTimeout(() => resolve({ foo: 'bar'}), 2000)
));

const json = await request();
return json;
}

当我以这种方式使用代码时

console.log(getJSON()); // returns Promise

它返回一个 promise

但是当我调用这行代码时

getJSON().then(json => console.log(json)); // prints { foo: 'bar' }

它按预期打印 json

是否可以仅使用像 console.log(getJSON()) 这样的代码?我不明白什么?

最佳答案

每个async函数都会返回一个Promise对象await 语句对 Promise 进行操作,等待 Promise resolverejects.

所以不,即使您使用 await,您也不能直接对异步函数的结果执行 console.log。使用 await 将使您的函数等待,然后返回一个立即解析的 Promise,但它不会为您解开 Promise。您仍然需要使用 await 或使用 .then() 解开 async 函数返回的 Promise

当您使用 .then() 而不是直接使用 console.logging 时,.then() 方法会生成 promise 给你。但是您无法从 Promise 外部获取 Promise 的结果。这是使用 Promise 的模型的一部分。

关于javascript - async/await 总是返回 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43422932/

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