美文网首页
promise到底如何返回值,记录小用法

promise到底如何返回值,记录小用法

作者: 三亿 | 来源:发表于2023-03-06 15:40 被阅读0次

    通过axios请求数据,将promise中的数据return出外层调用函数去:
    其实也就是await的各种用法。有人问如果不用await怎么办,那就使用回调函数呗

    更新示例:

    • 注意第一个为反面示例
    //伪axios异步获取数据
    function fakeAxios() {
      return new Promise((res, rej) => {
        setTimeout(() => {
          res("result"), 100;
        });
      });
    }
    // 在then中得到的值,如何return到本函数外。
    function getNothing() {
      //这样肯定undefined,函数体在赋值执行前返回
      let result;
      fakeAxios().then((res) => {
        result = res + "0";
      });
      return result;
    }
    //以下5种为可行方案
    async function getResult1() {
      let result;
      await fakeAxios().then((res) => {
        result = res + "1";
      });
      return result;
    }
    
    async function getResult2() {
      let res = await fakeAxios();
      return res + "2";
    }
    
    function getResult3() {
      return fakeAxios(); //放到外层处理
    }
    
    function getResult4() {
      return fakeAxios().then((res) => {
        return Promise.resolve(res + "4");
      });
    }
    
    function getResult5() {
      return fakeAxios().then((res) => {
        return new Promise((resolve) => {
          resolve(res + "5");
        });
      });
    }
    
    async function main() {
      let r0 = await getNothing(); //错误示例
      let r1 = await getResult1();
      let r2 = await getResult2();
      let r3;
      await getResult3().then((res) => (r3 = res + "3"));
      let r4 = await getResult4();
      let r5 = await getResult5();
      console.log(r0, r1, r2, r3, r4, r5);
    }
    main();
    //输出 undefined result1 result2 result3 result4 result5
    
    

    相关文章

      网友评论

          本文标题:promise到底如何返回值,记录小用法

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