Node.js 如何如果在1分钟内未收到响应即返回错误

Node.js 如何如果在1分钟内未收到响应即返回错误

在Node.js中,有时由于某些错误,响应所需时间比通常多,这种情况下,我们可以返回一个错误或者一些消息,如果在1分钟内未收到响应,而不是等待不确定的时间。

问题: 假设有一个函数 ‘helloGeeks’ 它返回一个promise,然后使用关键词 ‘then’ 来记录返回值。函数 ‘helloGeeks’ 花费的时间太长,导致执行流程停止。

let helloGeeks = new Promise((resolve, reject) => { 
   setTimeout(resolve, 120000, 'Hello Geeks!') 
}) 
  
helloGeeks.then((value) => { 
   console.log(value) 
})

输出:

Node.js 如何如果在1分钟内未收到响应即返回错误

方法1: 让我们创建一个函数 ‘defaultResponse’ 它返回一个promise作为响应。我们希望执行这个函数,而不是比平时更耗时的函数。在这个情况下,我们希望执行的函数是 ‘helloGeeks’ 函数,它需要超过1分钟才能返回响应。

let defaultResponse = new Promise((resolve, reject) => { 
    setTimeout(resolve, 60000, 'Response timeout!'); 
})

现在,我们需要使用 Promise.race 方法来竞争promise,这个方法将不同的promise作为参数,并执行花费时间较短的那个,所以我们传入 ‘helloGeeks’‘defaultResponse’ ,如果‘helloGeeks’花费时间少于1分钟,它就会被执行,否则会执行 ‘defaultResponse’ ,因为它只花费1分钟。

Promise.race([helloGeeks, defaultResponse]).then((value) => { 
   console.log(value); 
});

示例: 这是使用上述方法来解决问题的完整运行代码。

let helloGeeks = new Promise((resolve, reject) => { 
    setTimeout(resolve, 120000, 'Hello Geeks!') 
}) 
  
let defaultResponse = new Promise((resolve, reject) => { 
    setTimeout(resolve, 60000, 'Response timeout!'); 
}) 
  
Promise.race([helloGeeks, defaultResponse]).then((value) => { 
    console.log(value); 
});

输出:

Node.js 如何如果在1分钟内未收到响应即返回错误

let defaultResponse = () => { 
    setTimeout(() => { 
        console.log('Response timeout!'); 
        process.exit(); 
    }, 2000); 
} 
  
let helloGeeks = () => { 
    setTimeout(() => { 
        console.log('Hello Geeks!'); 
    }, 6000); 
} 
  
defaultResponse(); 
helloGeeks();

输出:

Node.js 如何如果在1分钟内未收到响应即返回错误

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程