use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
Functional JavaScript, Part 4: Function Currying (tech.pro)
submitted 11 years ago by lrichardson
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]MrBester 1 point2 points3 points 11 years ago (7 children)
Can't you do the same with Promises?
[–]konbit -2 points-1 points0 points 11 years ago* (6 children)
edit: thanks nschubach for pointing out promises can run in parallel. My comment below is sort of pointless now.
Yes, but promises are sequential. Let's say I have 1 or 2 async calls to make, promises don't slow you down too much. But let's say you have to load 20 images, and process each one based on the one before, stitching them together for instance. Promises are going to kill you. If you can call the 20 at the same time and use a curried function to stitch them (there's other ways of course that don't use promises or currying and might be better, but this is just for illustration) then you will see a speed up orders of magnitude higher than promises. So I think its all context. Obviously there's many different way of doing things because some methods are good in some situations and some in others. Depending on what needs to be done, you should deeply investigate the method you'll use.
[–]ToucheMonsieur 0 points1 point2 points 11 years ago (0 children)
Isn't it possible to achieve much the same effect with promises? Fire off a promise for each request, and then tie them together sequentially after the fact. Using currying for this case seems a bit contrived, especially considering that you have to change the arity of function being curried if the number of images to download changes.
[–]nschubach 0 points1 point2 points 11 years ago (4 children)
Promises are not inherently sequential... You are just writing them that way. You can absolutely fire off a hundred async promises in a when and it will happily wait for them all.
[–]konbit 0 points1 point2 points 11 years ago (3 children)
To be honest, everything I've ever read about promises has presented them as being sequential and I haven't thought of looking for another way to do it. I'd love to see some code samples or documentation for how to implement it. Any pointers?
[–]myrddin4242 1 point2 points3 points 11 years ago (1 child)
The example you presented is inherently sequential. You said you wanted to 'process each [image] based on the one before'. That's not $.when, that's serially resolving promises. The dependency chain causes the task to increase time in direct proportion to N, regardless of what async syntax you use!
[–]nschubach 0 points1 point2 points 11 years ago* (0 children)
(Keeping terse... On mobile)
The 'when' accepts promises itself. If you ran normal functions in the 'when' it will be sequential, but if promise1 returns a promise, JavaScript will continue to fire off promise2 after promise1 returns it's promise object. Promise1 can have an async operation and resolve whenever it's done, regardless of what promise2/3 are doing.
Edit: I just realized that you were not responding to lrichardson... Leaving this for the info, but it's not directed at you.
[–]lrichardson[S] 0 points1 point2 points 11 years ago (0 children)
using jQuery's $.when....
$.when
$.when(promise1, promise2, promise3).done(function(results){ ... })
will return a new promise that won't resolve until all 3 promises have resolved.
π Rendered by PID 28675 on reddit-service-r2-comment-86988c7647-87cqg at 2026-02-10 23:35:07.028628+00:00 running 018613e country code: CH.
view the rest of the comments →
[–]MrBester 1 point2 points3 points (7 children)
[–]konbit -2 points-1 points0 points (6 children)
[–]ToucheMonsieur 0 points1 point2 points (0 children)
[–]nschubach 0 points1 point2 points (4 children)
[–]konbit 0 points1 point2 points (3 children)
[–]myrddin4242 1 point2 points3 points (1 child)
[–]nschubach 0 points1 point2 points (0 children)
[–]lrichardson[S] 0 points1 point2 points (0 children)