vue-ant-patterns
Version:
vue-ant-patterns
84 lines (71 loc) • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/*
* @Author: w.pengfei
* @Date: 2020-09-06 14:37:52
* @LastEditTime: 2020-09-06 19:29:08
* @Description: ''
* @LastEditors: w.pengfei
*/
var serialPromise = function serialPromise(arr) {
return new Promise(function (resolve, reject) {
if (!Array.isArray(arr)) {
return reject('The parameter type is not an array');
}
if (!arr || !arr.length) {
return reject(!arr ? 'Parameter is undefined' : 'Empty array');
}
var arrLen = arr.length;
var generator = /*#__PURE__*/_regenerator2['default'].mark(function generator() {
var i, len;
return _regenerator2['default'].wrap(function generator$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
i = 0, len = arr.length;
case 1:
if (!(i < len)) {
_context.next = 7;
break;
}
_context.next = 4;
return arr[i];
case 4:
i++;
_context.next = 1;
break;
case 7:
case 'end':
return _context.stop();
}
}
}, generator, this);
});
var genRes = generator();
var step = function step(nextHandler) {
var next = nextHandler();
arrLen--;
if (arrLen <= 0 && next.done) {
resolve('All success');
}
if (next.value) {
next.value.then(function (data) {
step(function () {
return genRes.next();
});
})['catch'](function (e) {
return reject(e);
});
}
};
step(function () {
return genRes.next();
});
});
};
exports['default'] = serialPromise;