当前位置: 首页 > news >正文

深圳网站开发网站一般网站前端是用什么做

深圳网站开发网站,一般网站前端是用什么做,投标网招标网,班级网站 程序优化 getUserInfo 请求 要求 getUserInfo 是个通用接口,在各个模块里面都有可能使用 requestUserInfo 模拟的是请求服务端真正获取用户信息的方法 业务背景 在一个页面有 A, B, C 等多个功能模块,A, B, C 模块渲染执行顺序不可控每个模块都会调用 get…

优化 getUserInfo 请求

要求
getUserInfo 是个通用接口,在各个模块里面都有可能使用 requestUserInfo 模拟的是请求服务端真正获取用户信息的方法

业务背景

  • 在一个页面有 A, B, C 等多个功能模块,A, B, C 模块渲染执行顺序不可控
  • 每个模块都会调用 getUserInfo 这个方法, 这个方法是可以直接调用 requestUserInfo 获取用户信息
  • 调用三次就会发起三次网络请求
  • 现在需要优化 getUserInfo 这个方法, 保证 getUserInfo 方法3次调用后, 最终只会发出一次网络请求。

测试用例

import { isEqual } from 'lodash-es';/*** 第二题*/// 核心用户请求
let _requestTime = 0;
const requestUserInfo = () => {// 这个方法的实现不能修改return Promise.resolve().then(() => {return new Promise<void>((resolve) => {setTimeout(() => {// 模拟 ajax 异步,1s 返回resolve();}, 1000);}).then(() => {_requestTime++;return {nick: "nick",age: "18",};});});
};async () => {try {// 模拟请求const result = await Promise.all([getUserInfo(),new Promise(resolve => setTimeout(async () => { resolve(await getUserInfo()) }, 300)),new Promise(resolve => setTimeout(async () => { resolve(await getUserInfo()) }, 2300))]);if (!isEqual(result, [{nick: "nick",age: "18",}, {nick: "nick",age: "18",}, {nick: "nick",age: "18",}])) {throw new Error('Wrong answer');}return _requestTime === 1;} catch (err) {console.warn('测试运行失败');console.error(err);return false;}
};

思路

  • 由于测试用例使用Promise.all调用,则需要返回Promise。
  • 又因为只需要调用一次接口则拿到数据之后需要缓存方便共享。
  • 一旦有数据那就直接resolve。
  • 由于Promise返回的也是Promise,可以缓存第一次的Promise,如果存在则只需要等第一次结束
  • 结束之后的Promise我们再通过拿到结果进行resolve。

实现

let cache = null;
let preRequest = null;
const getUserInfo = () => {return new Promise((resolve,reject)=>{if(cache) resolve(cache)if(preRequest){preRequest.then(res=>{resolve(cache)}).catch(err=>{reject(cache)})}else{preRequest = requestUserInfo().then(res => {cache = res;resolve(res)}).catch((err) => {reject(err)})}})
}
http://www.yayakq.cn/news/355265/

相关文章:

  • 百度网站评级网络优化软件有哪些
  • 网站开发用什么服务器手机网站建设公司排名
  • 淘宝客怎么做推广网站文登区住房和城乡建设局网站
  • 网站建设要学哪些软件网站制作流程有哪些
  • 沈阳公司网站建设爱站工具的功能
  • 网站开发问题论文公众号平台官网登录入口手机版
  • 做网站太累网络推广简历
  • 哪个协会要做网站建设啊做网站定位
  • 网站免费建站叉手南充市住房和城乡建设厅网站
  • 简洁风格的网站模板免费下载做网站的语
  • 分析网站的优势和不足网络系统管理和配置
  • 网站建设和管理情况调查表天元建设集团有限公司公章图片
  • 建站的公司象山县建设工程招投标网站
  • 如何用群晖做自己的网站廊坊建设银行网站
  • 网站底部版权信息格式旅游最新资讯
  • 企业网站托管有必要吗青岛网站设计价格
  • 大连 建网站河北建筑培训网官网
  • 外贸网站建设视频教程企业网站建设报价表
  • 杭州最便宜的网站建设网站招代理
  • 影响力网站建设唯品会网站建设目标
  • 做网站需要哪些技术知乎沧州百胜信息技术有限公司
  • 网站图片修改wordpress的functions.php
  • 2023兔年ppt免费模板张家港seo建站
  • 手机网站营销用手机怎么做网站
  • 常熟做网站推广的wordpress仿站教程+vip
  • 网站空间和域名响应式网页模版
  • 网站如何分页惠州淘宝网站建设
  • 运营的网站深圳市宝安区核酸检测点
  • 网站建设零基础教材免费下载网站的建设及维护
  • 泰州谁会建网站网站设计公司深圳