大家开发中经常会用到一些别人封装好的的回调函数。实际上他们的回调是这么写的:
js:
$.ajax({ url : settings.url, data: queryparam, type:'post', cache:false, dataType:'json', async:settings.async, contentType: "application/x-www-form-urlencoded; charset=utf-8", success : function(data) {
//这里也是 if(settings.loadcallback && settings.loadcallback.success) { try{
settings.loadcallback.success(data); } catch(e) { } }
//加了try后不影响后面代码运行 console.info(data);
//这里可以同样的再增加一个回调 }, error: function() {
//这里 判断这个方法存不存在。如果使用者在调用时使用了该方法,就去执行 if(settings.loadcallback && settings.loadcallback.error) { settings.loadcallback.error(); } msg('加载失败'); } });
java:
private final class Worker implements Runnable
private void runTask(Runnable task) { final ReentrantLock runLock = this.runLock; runLock.lock(); try { if (runState < STOP && Thread.interrupted() && runState >= STOP) boolean ran = false; beforeExecute(thread, task); //beforeExecute方法是ThreadPoolExecutor类的一个方法,没有具体实现,用户可以根据 //自己需要重载这个方法和后面的afterExecute方法来进行一些统计信息,比如某个任务的执行时间等 try { task.run(); ran = true; afterExecute(task, null); ++completedTasks; } catch (RuntimeException ex) { if (!ran) afterExecute(task, ex); throw ex; } } finally { runLock.unlock(); } }