UNPKG

dareway-rui

Version:

364 lines (308 loc) 15.7 kB
'use strict'; var _interopRequireDefault = require('@babel/runtime/helpers/interopRequireDefault'); var _regeneratorRuntime2 = require('@babel/runtime/regenerator'); Object.defineProperty(exports, '__esModule', { value: true }); exports.default = void 0; var _regenerator = _interopRequireDefault(require('@babel/runtime/regenerator')); var _classCallCheck2 = _interopRequireDefault(require('@babel/runtime/helpers/classCallCheck')); var _createClass2 = _interopRequireDefault(require('@babel/runtime/helpers/createClass')); var _URL = _interopRequireDefault(require('./../../util/URL')); var _request = _interopRequireDefault(require('./../../util/request')); var _CodeCache = _interopRequireDefault(require('../CodeCache')); var _CodeUtil = _interopRequireDefault(require('../CodeUtil')); var _marked = /*#__PURE__*/ _regeneratorRuntime2.mark(getCodeListByRequest), _marked2 = /*#__PURE__*/ _regeneratorRuntime2.mark(getSingleCodeByRequest); var Code = /*#__PURE__*/ (function() { function Code() { (0, _classCallCheck2.default)(this, Code); // promise数组 控制form获取code数据的时序 this.promiseArray = []; this.promiseObject = {}; //标记某些promise,这些promise是应用程序控制开始、结束 } /*** * * 入参: codeBH * 出差: codeMap */ (0, _createClass2.default)(Code, [ { key: 'getSingleCode', value: /*#__PURE__*/ _regenerator.default.mark(function getSingleCode(codeBH) { var result, singleCodeResolve, singleCodePromise, codeMapResult; return _regenerator.default.wrap( function getSingleCode$(_context) { while (1) { switch ((_context.prev = _context.next)) { case 0: if (codeBH) { _context.next = 2; break; } throw new Error('入参codeBH不能为空!'); case 2: if (!_CodeCache.default.isCodeExist(codeBH)) { _context.next = 5; break; } result = _CodeCache.default.getCode(codeBH); return _context.abrupt('return', result); case 5: //(2)需要请求后台的情况 singleCodeResolve = null; singleCodePromise = new Promise(function(resolve) { singleCodeResolve = resolve; }); this.promiseArray.push(singleCodePromise); _context.next = 10; return getSingleCodeByRequest(codeBH); case 10: codeMapResult = _context.sent; _CodeCache.default.addCodeList(codeMapResult); //后台请求完毕,并且code已经存入缓存,完成promise singleCodeResolve(); return _context.abrupt('return', codeMapResult); case 14: case 'end': return _context.stop(); } } }, getSingleCode, this ); }) /*** * 入参 * codeInfoArray :[codeBH1,codeBH2] * 出参 * codeMapResult : {codeBH1:[],codeBH2:codeMap} */ }, { key: 'getCodeList', value: /*#__PURE__*/ _regenerator.default.mark(function getCodeList(codeInfoArray) { var requestCodeList, i, codeBH, codeMapResult, j, _codeBH, codeMap, codeListResolve, codeListPromise, codeMapList; return _regenerator.default.wrap( function getCodeList$(_context2) { while (1) { switch ((_context2.prev = _context2.next)) { case 0: if (codeInfoArray) { _context2.next = 2; break; } throw new Error('入参codeInfoArray不能为空!'); case 2: if (!(!codeInfoArray instanceof Array)) { _context2.next = 4; break; } throw new Error('入参codeInfoArray必须为Array数组类型!'); case 4: //获取需要向后台请求的codeList requestCodeList = []; for (i = 0; i < codeInfoArray.length; i++) { codeBH = codeInfoArray[i].toUpperCase(); if ( requestCodeList.indexOf(codeBH) === -1 && !_CodeCache.default.isCodeExist(codeBH) ) { requestCodeList.push(codeBH); } } //(1)不需要向后台请求codeList,前台codeCache中都存在 if (requestCodeList.length) { _context2.next = 10; break; } codeMapResult = {}; for (j = 0; j < codeInfoArray.length; j++) { _codeBH = codeInfoArray[j].toUpperCase(); codeMap = _CodeCache.default.getCode(_codeBH); codeMapResult[_codeBH] = codeMap; } return _context2.abrupt('return', codeMapResult); case 10: //(2)需要请求后台的情况 codeListResolve = null; codeListPromise = new Promise(function(resolve) { codeListResolve = resolve; }); this.promiseArray.push(codeListPromise); _context2.next = 15; return getCodeListByRequest(codeInfoArray); case 15: codeMapList = _context2.sent; _CodeCache.default.addCodeList(codeMapList); //后台请求完毕,并且code已经存入缓存,完成promise codeListResolve(); return _context2.abrupt('return', codeMapList); case 19: case 'end': return _context2.stop(); } } }, getCodeList, this ); }) }, { key: 'getCode', value: /*#__PURE__*/ _regenerator.default.mark(function getCode(codeBH, prefix) { var codeMap, codeMapResult; return _regenerator.default.wrap( function getCode$(_context3) { while (1) { switch ((_context3.prev = _context3.next)) { case 0: _context3.next = 2; return Promise.all(this.promiseArray); case 2: codeMap = _CodeCache.default.getCode(codeBH); if (!codeMap) { codeMap = []; } codeMapResult = _CodeUtil.default.fiterCodeMapByPrefix(codeMap, prefix); return _context3.abrupt('return', codeMapResult); case 6: case 'end': return _context3.stop(); } } }, getCode, this ); }) }, { key: 'wait', value: /*#__PURE__*/ _regenerator.default.mark(function wait() { return _regenerator.default.wrap( function wait$(_context4) { while (1) { switch ((_context4.prev = _context4.next)) { case 0: _context4.next = 2; return Promise.all(this.promiseArray); case 2: case 'end': return _context4.stop(); } } }, wait, this ); }) }, { key: 'completeOne', value: function completeOne(promiseKey) { var promiseResolve = this.promiseObject[promiseKey].promiseResolve; promiseResolve(); } }, { key: 'startOne', value: function startOne(promiseKey) { var promiseResolve = null; var promiseObj = new Promise(function(resolve) { promiseResolve = resolve; }); this.promiseObject[promiseKey] = { promiseObj: promiseObj, promiseResolve: promiseResolve }; this.promiseArray.push(promiseObj); } } ]); return Code; })(); exports.default = Code; function getCodeListByRequest(codeInfoArray) { var url, result, codeMapResult; return _regenerator.default.wrap(function getCodeListByRequest$(_context5) { while (1) { switch ((_context5.prev = _context5.next)) { case 0: if (codeInfoArray) { _context5.next = 2; break; } throw new Error('入参codeInfoArray不能为空!'); case 2: if (!(!codeInfoArray instanceof Array)) { _context5.next = 4; break; } throw new Error('入参codeInfoArray必须为Array数组类型!'); case 4: url = new _URL.default('codeCache/getCodeList'); url.addPara('codeList', JSON.stringify(codeInfoArray)); _context5.next = 8; return (0, _request.default)(url, false); case 8: result = _context5.sent; codeMapResult = JSON.parse(result); return _context5.abrupt('return', codeMapResult); case 11: case 'end': return _context5.stop(); } } }, _marked); } function getSingleCodeByRequest(codeBH) { var url, result, codeMap; return _regenerator.default.wrap(function getSingleCodeByRequest$(_context6) { while (1) { switch ((_context6.prev = _context6.next)) { case 0: if (codeBH) { _context6.next = 2; break; } throw new Error('入参codeBH不能为空!'); case 2: url = new _URL.default('codeCache/getCode'); url.addPara('code', codeBH); _context6.next = 6; return (0, _request.default)(url, false); case 6: result = _context6.sent; codeMap = JSON.parse(result); return _context6.abrupt('return', codeMap); case 9: case 'end': return _context6.stop(); } } }, _marked2); } //@ sourceMappingURL=Code.js.map