回调函数:将函数作为参数传递给另一个函数
用普通的return方式是否可以返回异步数据?
function getAsyncData(){
setTimeout(() => {
//假设获取到的数据为data
let data = "hello,JS";
return data;
}, 2000);
}
// 调用获异步结果的方法
let res = getAsyncData();
console.log(res);
打印结果如下:
这是因为在getAsyncData是同步函数,setTimeout是异步的任务(宏任务),需要等到getAsyncData(同步函数执行完之后)才执行,所以会打印出undefined。
那么怎样才能获取异步任务的数据?
————方案1:回调函数
function getAsyncData(fn){
setTimeout(() => {
//假设获取到的数据为data
let data = "hello,JS";
// 需注意data是实参
fn(data);
}, 2000);
}
// 需注意value是形参
getAsyncData((value)=>{
console.log("获取到的异步任务的结果为:"+value);
})
输出结果:
我们发现2s后会输出
我们通过回调函数的方式成功的获取到了异步任务的结果。在获取数据时需要传递一个函数。但这样的方式也不大直观,需要花一些时间理解。于是,
方案2:promsie(es6提供的一个内置对象)
方案3:async await
以上两种方案详见我的另一篇博客
https://blog.csdn.net/qq_42931285/article/details/119879539?spm=1001.2014.3001.5501
版权声明:本文为qq_42931285原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。