Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Creates a new promise that automatically resolves after some timeout:
- Promise.delay = function (time) {
- return new Promise((resolve, reject) => {
- setTimeout(resolve, time)
- })
- }
- // Throttle this promise to resolve no faster than the specified time:
- Promise.prototype.takeAtLeast = function (time) {
- return new Promise((resolve, reject) => {
- Promise.all([this, Promise.delay(time)]).then(([result]) => {
- resolve(result)
- }, reject)
- })
- }
- // Make sure this doesn't resolve for at least 300ms, useful for things like
- // keeping a loading spinner on screen just long enough to not look janky:
- axios.post(`/published-products`, payload)
- .takeAtLeast(300)
- .then(response => {
- this.loading = false
- // ...
- })
- .catch(response => {
- this.loading = false
- // ...
- })
Add Comment
Please, Sign In to add comment