-
es6新增的sync是用来解决异步编程的函数,最常见的异步编程就ajax请求,一般开发中都会遇到一个场景,就是封装了一个ajax请求函数,需要获取请求的结果才能进行下一步的操作,那这时候,就不能直接用变量接收ajax的返回值,因为不知道什么时候请求完成,而js的代码运行是不会等待请求的完成,它一直向下运行,这个时候变量接收的值是undefind,只能把逻辑操作放到请求成功的回调中。es6里面解决这个问题推出了sync函数。
使用sync函数
- 使用
sync函数,需要在函数前面加上sync标识,表示这是一个异步函数,使用await命令等待异步请求的结果(需要在请求成功的回调中return一个值),用变量接收,await运行完毕之后才会继续向下运行,sync函数返回的是一个promise,所以也可通过.then的方式拿到异步结果。
普通函数
function set(){
var result;
$.ajax({
url:"https://v1.itooi.cn/netease/banner",
type:"GET",
success:function(res){
result=res;
return res
}
})
console.log(result)//undefined
}
set()
sync函数
async function get(){
var result=await $.ajax({
url:"https://v1.itooi.cn/netease/banner",
type:"GET",
success:function(res){
return res
}
})
console.log(result)//data
return result;
}
get().then((res)=>{
console.log(res)//data
});
网友评论