mallConfig.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import request from './request.js';
  2. import api from './appOnLaunch.js';
  3. let isFirstAppRun = true;
  4. let isGettingFromService = false;
  5. let mallConfig = null;
  6. let cacheKey = '_APP_CONFIG';
  7. let resolveList = [];
  8. let rejectList = [];
  9. const getConfigFormServer = (resolve, reject) => {
  10. if (resolve) {
  11. resolveList.push(resolve);
  12. }
  13. if (reject) {
  14. rejectList.push(reject);
  15. }
  16. if (isGettingFromService) {
  17. return;
  18. }
  19. isGettingFromService = true;
  20. request({
  21. url: api.index.config,
  22. }).then(response => {
  23. isGettingFromService = false;
  24. if (response.code === 0) {
  25. mallConfig = response.data;
  26. uni.setStorageSync(cacheKey, mallConfig);
  27. for (let i in resolveList) {
  28. resolveList[i](mallConfig);
  29. }
  30. resolveList = [];
  31. } else {
  32. for (let i in rejectList) {
  33. rejectList[i](response.msg);
  34. }
  35. rejectList = [];
  36. }
  37. }).catch(error => {
  38. isGettingFromService = false;
  39. for (let i in rejectList) {
  40. rejectList[i](error.msg);
  41. }
  42. rejectList = [];
  43. });
  44. };
  45. export default {
  46. getConfig(options) {
  47. return new Promise((resolve, reject) => {
  48. if (mallConfig) {
  49. return resolve(mallConfig);
  50. }
  51. mallConfig = uni.getStorageSync(cacheKey);
  52. if (mallConfig) {
  53. if (isFirstAppRun) {
  54. isFirstAppRun = false;
  55. getConfigFormServer();
  56. }
  57. return resolve(mallConfig);
  58. } else {
  59. getConfigFormServer(resolve, reject);
  60. }
  61. });
  62. },
  63. resetConfig() {
  64. mallConfig = null;
  65. uni.removeStorageSync(cacheKey);
  66. isGettingFromService = false;
  67. }
  68. };