我编写了一个函数来处理从异步函数抛出的异常,如:
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
?
答案 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”可能会返回一个诺言,但是无论如何,解决方案都会使它成为一个承诺。