dareway-rui
Version:
364 lines (308 loc) • 15.7 kB
JavaScript
;
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