3 ms·
This method has basically turned an async request into a synchronous request. One idea is that you make requests A, B, and C concurrently, parse the data, then
by mikeryan 15y ago
This method has basically turned an async request into a synchronous request. One idea is that you make requests A, B, and C concurrently, parse the data, then have a handler which waits for the 3 to complete and then combines them into a single response, as opposed to cascading all the callbacks.
- agscala 15y agoI understand that, but I feel like a majority of the javascript async code I've seen has all been in this format. By chance, do you have an example of handler which would wait for multiple async requests to complete?
- fatjonny 15y agoYou could write your own way of doing it or use an existing flow control library. There are lots. :) https://github.com/joyent/node/wiki/modules#wiki-async-flow https://github.com/joyent/node/wiki/modules#wiki-async-flow For a specific example, look at async.parallel: https://github.com/caolan/async https://github.com/caolan/async
- agscala 15y agoI wish I knew about this kind of thing last time I hacked on node.js... I would have had such better & cleaner code. This clears up a lot. Thanks
- mikeryan 15y agoSo I have yet to find a project to use node on, my case is mostly for Async AJAX requests. Here's a very simple version (which I admit to still using occasionally) RequestHandler = { numberOfRequests: 3 makeRequests: function() { var __this = this; a(function() { // Parse Data __this.completeRequest(); }) b(function() { // Parse Data __this.completeRequest(); }) c(function() { // Parse Data __this.completeRequest(); }) }, completeRequest: function() { this.numberOfRequests--; if(this.numberOfRequests == 0 ) this.doDone(); } doDone: function() { // We now have all data, do what we will. } } RequestHandler.makeRequests();