Javascript Promises has been around for a while but only got the chance to use it on some of the aura component pieces I started working on.
In analogy you make a promise and either you fulfil or break your promise.
In Javascript Promises context these translate to “resolve” meaning promise is fulfilled or “reject” which means promise was broken and can be caused by an error.
A good use case for in Lightning is handling responses from asynchronous operations in which you pass a callback function. Then that callback function can make another asynchronous operation. Keep on nesting and you can easily eventually end with what they sometimes call callback hell as your code can be hard to manage.
Let’s dive into a creating Javascript Promise
I defined this as a helper method. It calls an apex method and depending on response and getState I mapped it to either resolve or reject.
Here I assigned a variable to the returned Promise in the javascript controller. The helper returns one parameter which is the response which I can access on the .then statement.
Here we called the p variable followed by a .then and the special callback function for Aura which is $A.getCallback. You can then chain another promise by calling and returning that promise. The next then can accept a parameter from the previous promise.
With Javascript Promises, this is more readable than a nested callback and easier to manage.
I hope you find this basic tip useful. Hit the comments below if you have questions.