/** * 等待token执行api * 没有token 就延时执行自己 直到有了token在请求 * @param {function} requestFn 执行请求的函数 */ export const waitTokenRequest = requestFn => { if (!requestFn || typeof requestFn !== 'function') throw new Error(`requestFn must be a function`); if (uni.$t.storage.getStorageSync(uni.$t.app.tokenKey)) { requestFn(); } else { setTimeout(() => waitTokenRequest(requestFn), 10); } }; export default { /** * 获取项目列表 * @param {number} startTime 起始时间 * @param {number} endTime 截止时间 */ getProjects(startTime, endTime, fn) { let remote = false; // 有缓存 且 服务端数据未返回 就先返回缓存 uni.$t.cache .getProjectsByDay(startTime, endTime) .then(data => { !remote && fn(null, data); }) .catch(err => !remote && fn(err)); waitTokenRequest(() => { // 拿到api数据后 再用api的数据 uni.$u.api .getProjects(startTime, endTime) .then(data => { remote = true; fn(null, data); // 存api到cache里 uni.$t.cache.putProjects(data); }) .catch(err => fn(err)); }); }, /** * 通过项目id获取角色信息 * @param {object} params 提交的参数 */ findShowRole(params, fn) { let remote = false; // 有缓存 且 服务端数据未返回 就先返回缓存 uni.$t.cache .getShowRole(params.projectId) .then(data => { !remote && fn(null, data); }) .catch(err => !remote && fn(err)); waitTokenRequest(() => { // 拿到api数据后 再用api的数据 uni.$u.api .findShowRole(params) .then(data => { remote = true; fn(null, data); // 存api到cache里 uni.$t.cache.putShowRole(params.projectId, data); }) .catch(err => fn(err)); }); }, /** * 根据时间基准点和角色查找定期任务 * @param {object} params 提交的参数 */ getRegularTask(params, fn) { let remote = false; // 有缓存 且 服务端数据未返回 就先返回缓存 uni.$t.cache .getStorageRegularTask(params) .then(data => { console.log('cache data: ', data); !remote && fn(null, data); }) .catch(err => !remote && fn(err)); waitTokenRequest(() => { // 拿到api数据后 再用api的数据 uni.$u.api .getRegularTask(params) .then(data => { console.log('api data: ', data); remote = true; fn(null, data); // 存api到cache里 uni.$t.cache.putStorageRegularTask(params, data); }) .catch(err => fn(err)); }); }, /** * 根据角色查找永久的日常任务 * @param {object} params 提交的参数 */ getPermanent(params, fn) { let remote = false; // 有缓存 且 服务端数据未返回 就先返回缓存 uni.$t.cache .getStoragePermanent(params) .then(data => { !remote && fn(null, data); }) .catch(err => !remote && fn(err)); waitTokenRequest(() => { // 拿到api数据后 再用api的数据 uni.$u.api .getPermanent(params) .then(data => { remote = true; fn(null, data); // 存api到cache里 uni.$t.cache.putStoragePermanent(data); }) .catch(err => fn(err)); }); }, /** * 根据时间和角色查找日常任务 * @param {object} params 提交的参数 */ getGlobal(params, fn) { let remote = false; // 有缓存 且 服务端数据未返回 就先返回缓存 uni.$t.cache .getDailyTask(params) .then(data => { !remote && fn(null, data); }) .catch(err => !remote && fn(err)); waitTokenRequest(() => { // 拿到api数据后 再用api的数据 uni.$u.api .getGlobal(params) .then(data => { remote = true; fn(null, data); // 存api到cache里 uni.$t.cache.putDailyTask(data); }) .catch(err => fn(err)); }); }, };