js中通过回调函数获取异步任务的数据

回调函数:将函数作为参数传递给另一个函数

用普通的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版权协议,转载请附上原文出处链接和本声明。