编辑代码

/**
 *
 * @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()