如果超过一定的限制时间,如何在Node.js中完成一个操作?

考虑我们要执行一些需要一些时间才能在Node.js中完成的操作,比如说doHeavyWork() 。 我们通常做的是我们传递一个callback函数:

 doHeavyWork(params, callbackFunction); 

现在,我想要为操作完成一个限制时间。 我想要的是,如果该操作的正常运行时间超过了限制时间,则该function终止,并通知回叫超出了限制时间。

这怎么能在Node.js中完成?

你会认为这是可能的一个简单的callback,但我要说明你的问题

 function doHeavyWork(params, callback) { // set the timeout var timeout = setTimeout(callback, 5000, Error('timeout')) // some debug message console.log('Please wait...') // begin heavy work // we sill simulate heavy work with setTimeout here setTimeout(function() { // if the function completed in time, clear the timeout clearTimeout(timeout) // callback without error callback(null, 'done') }, 3000) } // check to see it work doHeavyWork('some params', function(err, res) { if (err) throw error else console.log(res) })