使用回调函数、Promise、async await获取异步中的数据

引言

众所周知setTimeout是一个异步函数,试想以下场景、在setTimeout中定义一个变量并赋值,如何获取该变量的值。代码如下

function test(){

    setTimeout(()=>{

        let name = "张三";

    })

}

console.log(test())

如何获取name的值呢

假如在setTimeout函数内return name 输出结果为undefined

假如在setTimeout外test()函数内return name 执行报错

解决办法有以下三种方式

方式一:使用回调函数

代码如下

function test(callBack) {

  setTimeout(() => {

    var name = "张三";

    callBack(name);

  }, 1000);

}

const callBack = aaa => {

  console.log(aaa);

  return aaa;

};

test(callBack);

解释一下。其实很简单,就是在setTimeout回调函数里面再写一个回调函数,利用回调函数获取name。

方式二:使用Promise

const test = new Promise((reslove, reject) => {

  setTimeout(() => {

    let name = "张三";

    reslove(name);

  }, 1000);

});

test.then(res => {

  console.log(res);

});

方式三:async await

async function test() {

  return new Promise((reslove, reject) => {

    setTimeout(() => {

      var name = "张三";

      reslove(name);

    }, 1000);

  });

}

async function getdata() {

  var data = await test();

  console.log(data);

}

getdata();

你可能感兴趣的:(使用回调函数、Promise、async await获取异步中的数据)