Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @description ### Returns Go / Lua like responses(data, err)
- * when used with await
- *
- * - Example response [ data, undefined ]
- * - Example response [ undefined, Error ]
- *
- *
- * When used with Promise.all([req1, req2, req3])
- * - Example response [ [data1, data2, data3], undefined ]
- * - Example response [ undefined, Error ]
- *
- *
- * When used with Promise.race([req1, req2, req3])
- * - Example response [ data, undefined ]
- * - Example response [ undefined, Error ]
- *
- * @param {Promise} promise
- * @returns {Promise} [ data, undefined ]
- * @returns {Promise} [ undefined, Error ]
- */
- const handle = (promise) => {
- return promise
- .then(data => ([data, undefined]))
- .catch(error => Promise.resolve([undefined, error]));
- }
- // Explanation
- // The handle function takes a promise as an argument and always resolves it be returning an array with [data|undefined, Error|undefined].
- // If the promise passed to the handle function resolves it returns [data, undefined];
- // If it was rejected, the handle function still resolves it and returns [undefined, Error]
- // Usage
- async function userProfile() {
- let [user, userErr] = await handle(getUser());
- if(userErr) throw Error('Could not fetch user details');
- let [friendsOfUser, friendErr] = await handle(
- getFriendsOfUser(userId)
- );
- if(friendErr) throw Error('Could not fetch user\'s friends');
- let [posts, postErr] = await handle(getUsersPosts(userId));
- if(friendErr) throw Error('Could not fetch user\'s posts');
- showUserProfilePage(user, friendsOfUser, posts);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement