我正在尝试异步/等待功能。我有这样的代码模仿请求:
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())
?我不明白什么?
Every async
函数返回一个Promise
object. The await
语句运行于Promise
,等到Promise
resolve
s or reject
s.
所以不,你不能这样做console.log
直接在异步函数的结果上,即使您使用await
. Using await
会让你的函数等待然后返回Promise
它会立即解决,但不会解开Promise
为你。您仍然需要打开包装Promise
由返回async
函数,或者使用await
或使用.then()
.
当你使用.then()
代替console.log
直接 ging ,则.then()
方法使 Promise 的结果可供您使用。但你无法得到结果Promise
from outside承诺。这是使用 Promise 的模型的一部分。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)