如何检测typescript函数是否异步

时间:2016-01-30 14:01:04

标签: typescript

我编写了一个函数来处理从异步函数抛出的异常,如:

protected safeAsync(f : e.RequestHandler) : e.RequestHandler {
    /* how to detect if `f` is an async function here ?? */
    const binded = f.bind(this);
    return async function innerCall(req : e.Request, res : e.Response, next : Function) {
        try {
            return await binded(req, res, next);
        } catch (err) {
            log.debug(err);
            return next(err);
        }
    }
}

参数f应该是异步函数,例如

public async signupPost(req : e.Request, res : e.Response, next : Function) {/*...*/}

我的问题是:

safeAsync中,有没有办法检测f是否是异步函数,因此我可以将意外调用记录到safeAsync

2 个答案:

答案 0 :(得分:3)

由于这是运行时,请检查您应该问的问题是JavaScript是否提供了检查函数是否异步的方法。答案是否定的,没有万无一失的方法来判断一个函数是否异常,它甚至可能都是。

答案 1 :(得分:0)

你可以强迫它只是做 x y z rank_y rank_z 1: a 6.264538 15.1178117 3 4 2: a 1.836433 3.8984324 5 1 3: a 8.356286 6.2124058 2 2 4: a 15.952808 22.1469989 1 5 5: a 3.295078 11.2493092 4 3 6: b 8.204684 0.4493361 1 2 7: b 4.874291 0.1619026 4 1 8: b 7.383247 9.4383621 2 5 9: b 5.757814 8.2122120 3 4 10: b 3.053884 5.9390132 5 3 的异步,函数“f”可能会返回一个诺言,但是无论如何,解决方案都会使它成为一个承诺。