UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

58 lines 1.19 kB
/** * 信号。 */ export 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 }; }