美文网首页
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