Looking For If Then Else Pattern With Async Library
Solution 1:
I don't think that promises are good on my case because are more for piping events, IIUC
No. Promises don't represent a stream of events to pipe, but a single result that will arrive later (asynchronously). This is exactly what they were made for, and they will give you imperative-like looking code (instead of a nesting callback hell).
Admittedly, you still need nesting for control structures. The code that you presented won't look much different except for the callbacks going into .then()
calls, and promises being return
ed.
However, you can also use exceptions for control flow. Instead of using exists
that returns a Promise<boolean>
, you could use a find
function that returns a Promise<User>
which would get rejected when the user doesn't exist. It could be used like
find(user).then(function(/*user*/) {
return foo(user) /* .then(function(fooResult) {
…
}); */
}).catch(UserNotFoundError, function(e) {
return add(user) /* .then(function(addResult) {
…
}); */
});
Which of those to choose is debatable, rejections should be exceptional.
Post a Comment for "Looking For If Then Else Pattern With Async Library"