vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
62 lines (61 loc) • 1.25 kB
JavaScript
exports.__esModule = true;
exports.signal = signal;
/**
* 信号。
*/
function signal() {
var value;
var isOk = false;
var error;
var isFail = false;
var $resolve = [];
var $reject = [];
var setValue = function setValue(_value) {
value = _value;
if ($resolve.length) {
$resolve.forEach(function (resolve) {
return resolve(value);
});
$resolve.length = 0;
$reject.length = 0;
}
isOk = true;
isFail = false;
};
var throwError = function throwError(_error) {
error = _error;
if ($reject.length) {
$reject.forEach(function (reject) {
return reject(error);
});
$resolve.length = 0;
$reject.length = 0;
}
isOk = false;
isFail = true;
};
var getValue = function getValue() {
if (isOk) {
return Promise.resolve(value);
}
if (isFail) {
return Promise.reject(error);
}
return new Promise(function (resolve, reject) {
if (isOk) {
return resolve(value);
}
if (isFail) {
return reject(error);
}
$resolve.push(resolve);
$reject.push(reject);
});
};
return {
set: setValue,
get: getValue,
throw: throwError
};
}
;