If your sproc is taking seconds to run then you need to optimize it. Have your DBA perf test your sproc as it should be really fast. In a couple of seconds you should be able to return 1000s of rows. Of course the assumption here is that you have indice on the tables you're querying to speed things up. Your DBA should help with this. Note also that if a single sproc call is fast but when you call them in parallel they are slow then you are most likely running into locking issues. Your DBA should help you diagnose and fix these issues.
As for Angular there are limits. It is dependent upon the HTTP protocol and browser being used. From my understanding Chrome with HTTP 1.1 limits you to 6 calls per domain. However HTTP/2 allows more. So making a bunch of calls in a row, even async, may still sequentially process them. This should be obvious from the dev tools though.
If you're running any sort of real database server like SQL Server then it can handle 1000s of requests and isn't the issue. Although, again, your schema can be. If you don't have proper indexing, high contention for tables and/or bad execution plans then perf will plummet. Your DBA needs to help optimize this stuff. It is also possible you're doing something wrong in the backend although the code you posted, while a little to async-happy for my taste, should be fine and will run fast. The debugger can actually show you the timing of your calls. I suspect your execute call to the DB is where perf dies indicating a problem with the sproc you're calling.