真正意义上去解决异步回调的问题,同步流程表达异步操作
本质:Generator 的语法糖
语法:
async function foo(){
await 异步操作;
await 异步操作;
}
特点:
// 获取新闻内容
async function getNews(url) {
return new Promise((resolve, reject) => {
$.ajax({
method: 'GET',
url,
success: data => resolve(data),
error: error => reject()
})
} )
}
async function sendXml() {
let result = await getNews('http://localhost:3000/news?id=3');
console.log(result);
result = await getNews( 'http://localhost:3000' +result.commentsUrl);
console.log(result);
}
sendXml();
// 获取新闻内容
async function getNews(url) {
return new Promise((resolve, reject) => {
$.ajax({
method: 'GET',
url,
success: data => resolve(data),
error: error => resolve(false) // 小技巧,失败可以返回给用户提示信息
})
} )
}
async function sendXml() {
let result = await getNews('http://localhost:3000/news?id=3');
console.log(result);
if(!result){
alert('暂时没有新闻推送');
return;
}
result = await getNews( 'http://localhost:3000' +result.commentsUrl);
if(!result){
alert('暂时没有评论内容');
return;
}
console.log(result);
}
sendXml();