问题描述
我正在尝试围绕异步函数创建包装器,当我调用该函数时,总是得到一个函数,而不是想要得到的对象。
function wrap<T extends Function>(fn: T){
return <any> async function (...args) {
let result = await fn(...args)
return {
statusCode: 200,body: JSON.stringify({
data: result
}),}
};
}
let main = async (test: string) => {
console.log(`calling api ${test}`);
return wrap(() => {
console.log("")
return {
foo: "bar",}
});
};
main("test").then((res)=>{
console.log(res)
console.log(typeof res) // <-- function
})
我想念什么?
任何帮助将不胜感激。
解决方法
您没有调用该函数,只是将其包装在括号中。我相信这就是您所需要的。
function wrap<T extends Function>(fn: T){
return <any> async function (...args) {
let result = await fn(...args)
return {
statusCode: 200,body: JSON.stringify({
data: result
}),}
};
}
let main = async (test: any) => {
console.log(`calling api ${test}`);
return wrap(() => {
console.log("")
return {
foo: "bar",}
})();
};
main("test").then((res)=>{
console.log(res)
console.log(typeof res) // <-- object
})