/*
async/await 处理异步操作
*/
axios.defaults.baseURL = 'http://localhost:9999'
async function queryData() {
let result = await axios.get('adata')
console.log(result)
}
queryData()
app.get('/adata', (req, res) => {
res.send('hello again axios!')
})
结果:
如果我们直接在queryData
中返回结果,而不是打印,就可以在调用queryData
以后调用then
方法获取到返回值:
结果:
await
后面需要跟着一个promise实例对象,上面我们用的是axios,现在我们手动写一个promise对象:
结果:
async/await处理多个异步请求:
<script>
/*
async/await 处理多个异步操作
*/
axios.defaults.baseURL = 'http://localhost:9999'
async function queryData(){
// 得到调用接口async1的结果
const info = await axios.get('async1')
// 上面的结果这里需要拼接到查询字符串里并调用async2接口
const result = await axios.get('async2?info=' + info.data)
return result.data
}
queryData().then((result)=>{
console.log(result)
})
</script>
app.get('/async1', (req, res) => {
res.send('data')
})
app.get('/async2', (req, res) => {
console.log('req.query:', req.query)
if (req.query.info === 'china') {
res.send('final data')
} else {
res.send('processing...')
}
})
结果:
我们改一下接口async1的返回值:
结果: