Say I have a promise called myProm, and say I have success and error handlers called onSuccess and onError.
Whenever my promis
You can use Promise.race(), set timeoutHandler as a function which returns a rejected a Promise in ten seconds, else onSuccess should be called at fulfilled Promise of myProm
function myProm() {
return new Promise((success, err) => {
setTimeout(() => {
success("myProm")
}, Math.floor(Math.random() * 11000))
})
}
function timeoutHandler() {
return new Promise((_, timeout) => {
setTimeout(() => {
timeout(new Error("timeoutHandler"));
}, 10000)
})
}
function onSuccess(data) {
console.log("success", data)
}
function onError(err) {
console.log("err:", err)
}
function onTimeout(e) {
if (e.message && e.message === "timeoutHandler") {
console.log(e.message + " handled");
}
else {
onError(e)
}
}
Promise.race([myProm(), timeoutHandler()])
.then(onSuccess, onTimeout);
plnkr http://plnkr.co/edit/9UD5syOEOc1oQGdRTRRm?p=preview