node await 超时应该如何处理?

在 node 中,我需要 await 等待一个异步函数执行的结果,但是我想设置一个等待时间,超过这个等待时间,我就执行另一个方法,请问我应该怎么做?

const openTecplot = async (url,uuid)=> {
    const {error,pid} = await execFile("cmd.exe",['/s','/c', url])
    if(!error){
        console.log('打开成功')
        return ({msg:'success',pid:pid,uuid:uuid,code:0})
    }
}
阅读 4.4k
2 个回答

结合 Promise.race([]) 来处理。

const openTecplot = async (url,uuid)=> {
  const execution = execFile("cmd.exe",['/s','/c', url]);
  const timeout = sleep(10).then(() => throw new Error('超时了')); // 假设你有个 sleep 函数,可以计时 10s
  
  try {
    const {error, pid} = await Promise.race([execution, timeout]);
    if(!error){
        console.log('打开成功')
        return ({msg:'success',pid:pid,uuid:uuid,code:0})
    }
  } catch (e) {
    // 处理超时
  }
}
推荐问题
宣传栏