我是Typescript的新手,在组合多个回调和匿名函数时遇到问题。我正在扩展一个已经存在的项目,并且正在追随以前从事此工作的人的领导,但是如果需要的话,更改方法的结构没有问题。
所以我叫getAnimals(),我应该把动物数组取回来,但是我什么也没回来,甚至在queryFunction的if条件下也没有。如果我在if条件之外放置一个回调,程序将执行callback(allAnimals),但可以理解的是,出现“无法将标头发送给客户端后发送标头”错误。
class Service {
public getAnimals(con: any, callback: (animals: Animal[]) => any) {
var queryFunction = (query: string, args: any[], callback: (a: Animal[]) => any) => {
var allAnimals = [];
connection.query(query, args, (err, data) => {
err && console.error(err);
if (data.length != 0) {
allAnimals = <Animal[]>data;
console.log(allAnimals);
callback(allAnimals);
}
});
/* callback(allAnimals); this gives me a response but
the array is empty so it's not the response I want*/
}
var query1: string = "insert sql query here";
var args = ["args1", "args2"];
queryFunction(query1, args, (dogs: Dog[]) => {
var query2: string = "insert sql query here";
args = ["args3", "args4"];
queryFunction(query2, args, (cats: Cat[]) => {
var animals: Animal[] = [...dogs,...cats];
callback(animals);
});
});
}
}
我可能是错误地设置了queryFunction,或者我利用了错误的回调函数,但似乎无法正确实现。我将不胜感激。谢谢!