/**
*
* @param timeout<Number>
* @param request<Promise>
* @returns {Promise<any>}
const changeName = name => new Promise((resolve, reject) => {
setTimeout(() => resolve(name), 1000);
});
timeoutRequest(2000, changeName('hi')).then(console.log).catch(console.error)
// => print 'hi'
timeoutRequest(500, changeName('hi')).then(console.log).catch(console.error)
// => print 500ms timeout
*/
const timeoutRequest = async (timeout, request) => {
let timeoutPromise = new Promise((resolve, reject)=>{
setTimeout(()=>{
reject(timeout)
}, timeout)
})
try {
const res = await Promise.race([timeoutPromise, request])
console.log(res)
}catch (e) {
console.log(`${e}ms timeout`)
}finally{
// console.log("finally")
}
}
const changeName = name => new Promise((resolve, reject) => {
setTimeout(() => resolve(name), 1000);
});
timeoutRequest(2000, changeName('hi')).then().catch()
// => print 'hi'
timeoutRequest(500, changeName('hi')).then().catch()