Kin*_*han 26 javascript asynchronous node.js async-await axios
如何从异步函数返回值?我试着喜欢这个
const axios = require('axios');
async function getData() {
const data = await axios.get('https://jsonplaceholder.typicode.com/posts');
return data;
}
console.log(getData());
Run Code Online (Sandbox Code Playgroud)
它给我这个,
Promise { <pending> }
Run Code Online (Sandbox Code Playgroud)
The*_*son 26
你不能await超出async范围.为了得到预期的结果,你应该把你包装console.log成async IIFE即
async function getData() {
return await axios.get('https://jsonplaceholder.typicode.com/posts');
}
(async () => {
console.log(await getData())
})()
Run Code Online (Sandbox Code Playgroud)
Worked 样品.
有关的更多信息 async/await
因为axios返回一个promise,async/await可以省略getData函数,如下所示:
function getData() {
return axios.get('https://jsonplaceholder.typicode.com/posts');
}
Run Code Online (Sandbox Code Playgroud)
然后像我们之前那样做
(async () => {
console.log(await getData())
})()
Run Code Online (Sandbox Code Playgroud)
您的函数getData将返回一个Promise。
因此,您可以:
await该函数也可以得到结果。但是,要使用await,您需要使用async函数,因此需要“包装”一下:
async function callAsync() {
var x = await getData();
console.log(x);
}
callAsync();
Run Code Online (Sandbox Code Playgroud)
(为清楚起见,我为函数命名,但是在这种情况下,宁愿使用匿名函数调用;请参见TheReason的答案。)
要么
将结果用作普通的Promise,即异步函数返回的结果。
您必须使用then回调:
getData().then(x => {
console.log(x);
}
Run Code Online (Sandbox Code Playgroud)其他答案涵盖了这一罚款;但是我想讲一点,说习惯于创建和调用main函数,而不是在全局范围内运行。即
async main(){
let result = await getData();
}
main().catch(console.log);
Run Code Online (Sandbox Code Playgroud)
任何阅读您的代码的人都清楚这是您的应用程序入口点
| 归档时间: |
|
| 查看次数: |
28754 次 |
| 最近记录: |