JavaScript async 函数的优雅的异常处理

292 阅读1分钟

async await 方法特别好用,但是遇到异常的时候,如果手动的一个一个try catch会是一个非常费时费力的方法,而且容易忘记,造成错误,这里总结了两种方法,来解决这一问题。

方法一: 自己封装

方法定义

function to(promise) {
    if (!promise || !Promise.prototype.isPrototypeOf(promise)) {
        return new Promise((resolve, reject) => {
            reject(new Error('参数必须是 promise'));
        }).catch((err) => {
            return [err, null];
        });
    }
    return promise.then(data => {
        return [null, data];
    }).catch(err => {
        return [err, null];
    });
}

如何使用

async function f() {
    const [error, data] = await to(...);
    if(error){
        ...
    }
    ...
}

方法二: 第三方库

await-to-js

使用方法

import to from 'await-to-js';