// 在规定秒数内运行一个函数,如果超过则强制返回
function run_limit_second_catch(func, second) {
let pool = java.util.concurrent.Executors.newCachedThreadPool();
let future = pool.submit(new java.util.concurrent.Callable(function() { return func(); }));
try {
return future.get(second, java.util.concurrent.TimeUnit.SECONDS);
} catch(e) {
// 处理func函数的异常
console.log(e);
// 注意如果是异常返回 undefined
return undefined;
}
}
run_limit_second_catch(()=> { sleep(6000)}, 5); // 这个函数运行超过5秒,会被catch到并返回
run_limit_second_catch(()=> { console.log("ok") }, 2); // 正常运行完毕,无返回
let result = run_limit_second_catch(()=> { return "我是结果" }, 2); // 正常运行完毕并返回结果
console.log(result);