UNPKG

native-class-ext

Version:

js原生对象增加常用方法

61 lines (58 loc) 1.52 kB
(function(){ const defineProperty = require('./defineProperty.js') if (typeof Promise.allSettled === "undefined") { /** * 所有给定的Promise都实现或拒绝之后解析 * @param {Array} promises Promise数组 * @return {Array} 执行结果,顺序和promises一样, [{status: "rejected", reason: res}, {status: "fulfilled",value: res}] * */ let allSettled = async function(promises) { let ret = []; for (var i = 0; i < promises.length; i++) { try { let res = await promises[i]; ret[i] = { status: "fulfilled", value: res } } catch (e) { ret[i] = { status: "rejected", reason: e } } } return ret; } defineProperty(Promise, 'allSettled', allSettled); } if (typeof Promise.prototype.finally === 'undefined') { // 兼容低版本浏览器 defineProperty(Promise.prototype, 'finally', function(onFinally) { return this.then( res => Promise.resolve(onFinally()).then(() => res), err => Promise.resolve(onFinally()).then(() => { throw err; }) ); }); } /** * 不抛异常的方式返回结果 * */ let result = async function() { try { let res = await this; return { status: true, data: typeof res == 'boolean' ? res : (res || {}) }; } catch (e) { return { status: false, data: typeof e == 'boolean' ? e : (e || {}) }; } } defineProperty(Promise.prototype, '$result', result); })()