无法弄清楚如何在Typescript中组合回调和匿名函数

时间:2019-06-06 18:12:39

标签: typescript

我是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,或者我利用了错误的回调函数,但似乎无法正确实现。我将不胜感激。谢谢!

0 个答案:

没有答案