美文网首页HarmonyOS相关
使用回调函数、Promise、async await获取异步中的

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

作者: 666同学 | 来源:发表于2020-03-17 23:04 被阅读0次

    引言

    众所周知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获取异步中的

        本文链接:https://www.haomeiwen.com/subject/bodhyhtx.html