问下各位下面情况要怎么实现啊,关于优化请求次数的?

作者站长头像
站长
· 阅读数 17
let _requestTime = 0;
// 模拟网络请求
const requestUserInfo = () => {
  // 这个方法的实现不能修改
  return Promise.resolve().then(() => {
    return new Promise((resolve) => {
      setTimeout(() => {
        // 模拟 ajax 异步,1s 返回
        resolve();
      }, 1000);
    }).then(() => {
      // 当执行完成一次之后次数加1
      _requestTime++;
      return {
        nick: "nick",
        age: "18",
      };
    });
  });
};

// -------- 在这里完成代码 优化getUserInfo --------
// 调用 requestUserInfo,并优化请求次数
const getUserInfo = async () => {

};

// 业务场景 -- 页面中的组件都用到了requestUserInfo请求, 想办法优化请求把请求次数降为1次
async function test () {
  const result = await Promise.all([
    getUserInfo(),
    new Promise((resolve) =>
      setTimeout(async () => {
        resolve(await getUserInfo());
      }, 300)
    ),
    new Promise((resolve) =>
      setTimeout(async () => {
        resolve(await getUserInfo());
      }, 2300)
    ),
  ]);
  console.log(_requestTime) // 保证执行完Promise.all之后_requestTime为1就算成功
}

test()
回复
1个回答
avatar
test
2024-07-01
var getUserInfo = async () => {
    return getUserInfo.promise ||= requestUserInfo();
};
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容