Best practices for promises?
See original GitHub issueFirst of all, great job on this guide, I agree with it almost 100%. All of this should really be common knowledge, but I sure as hell didn’t know most of these things when I started, so kudos for writing it all down.
Now, since promises have been standardized and a lot of people have started using them, it would be nice to have a section on how to keep promise-based code readable. For instance, when chaining multiple promises together, there are at least two alternative ways to do it:
Option 1: anonymous functions
return doSomething(foo).then(function(result) {
// ...
}).then(function(result2) {
// ...
}).then(function(result3) {
// ...
}).catch(function(error) {
// ...
}).finally(function() {
// ...
});
Option 2: named functions
function doThis(result) {
// ...
}
function doThat(result) {
// ...
}
function handleError(error) {
// ...
}
function done() {
// ...
}
return doSomething(foo)
.then(doThis)
.then(doThat)
.catch(handleError)
.finally(done);
The second way, while being somewhat more verbose, seems to be preferable, as the chain of tasks that the promise result travels through becomes more obvious.
I did an internal poll of our developers, and so far, option 2 seems to be ahead, although I have not heard from everyone yet. How does AirBnB deal with this, and what are your opinions?
Issue Analytics
- State:
- Created 9 years ago
- Reactions:67
- Comments:46 (1 by maintainers)
Top GitHub Comments
About best practices, seems like you all put the
.then
on the same line instead of a new line…What do you think of
It seems a bit more compliant with leading dots in https://github.com/airbnb/javascript#whitespace
Chaining promises is fine but the chain should not go beyond 2 max. 3