为什么 async/await 总是返回 Promise?
使用 async/await 功能一开始可能会令人困惑,尤其是当涉及到处理异步函数返回的承诺。让我们深入研究所提供代码中突出显示的行为:
<br>const getJSON = async () =>; {<br> const 请求 = () =>; new Promise((解决, 拒绝) => (<pre class="brush:php;toolbar:false">setTimeout(() => resolve({ foo: 'bar'}), 2000)
));
const json = wait request();
return json;
}
执行 getJSON() 时,函数返回一个 Promise 目的。发生这种情况是因为每个异步函数都会在后台返回一个 Promise。 wait 关键字对此 Promise 进行操作,暂停函数执行,直到 Promise 解析或拒绝。
在示例中,await 等待 request() 解析。但是,它不会自动解开 Promise。您需要使用await或.then()显式处理返回的Promise。
使用.then(),如提供的代码所示:
<br>getJSON ().then(json => console.log(json)); // prints { foo: 'bar' }<br>
当 Promise 解析时调用回调函数并将结果作为 json 参数传递。这种方法允许在回调中访问解析值。
另一方面,使用 console.log(getJSON()) 直接记录异步函数的结果会返回一个 Promise 对象,因为它不会解包的承诺。 Promise 模型确保您只能从 Promise 本身内部或通过使用 .then().
等显式解包方法来访问 Promise 的结果。以上是为什么 Async/Await 函数总是返回 Promise?的详细内容。更多信息请关注PHP中文网其他相关文章!