UNPKG

vtils

Version:

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

38 lines (37 loc) 1.18 kB
"use strict"; exports.__esModule = true; exports.run = run; var _isPromiseLike = require("./isPromiseLike"); /** * 以数组的方式返回函数执行的结果,如果函数返回一个异步操作,将会执行该异步操作并将其结果作为函数执行的结果返回。 * * @param fn 要执行的函数 * @returns 返回 `[错误信息, 结果数据]`,错误信息为 `null` 表示没有错误 * @example * ```typescript * // 函数执行成功 * const [err, res] = await run(() => 'ok') // => [null, 'ok'] * const [err, res] = await run(async () => 'ok') // => [null, 'ok'] * * // 函数执行出错 * const [err, res] = await run(() => { throw 'err' }) // => ['err'] * const [err, res] = await run(async () => { throw 'err' }) // => ['err'] * ``` */ function run(fn) { return new Promise(function (resolve) { try { var res = fn(); if (!(0, _isPromiseLike.isPromiseLike)(res)) { return resolve([null, res]); } return res.then(function (res) { return resolve([null, res]); }, function (err) { return resolve([err]); }); } catch (err) { return resolve([err]); } }); }