JavaScript自定义超时API
实现一个Ajax请求时回调超时一个函数
1 function timeoutify(fn,delay) { 2 var intv = setTimeout( function(){ // 设置超时定时器 3 intv = null; 4 fn( new Error( "Timeout!" ) ); 5 }, delay ); 6 return function() { 7 // 还没有超时? 8 if (intv) { 9 clearTimeout( intv ); // 取消 intv 定时器 10 fn.apply( this, arguments ); // 通过apply将返回回来的数据绑定到自定义的fn函数上, 11 /*fn( null, arguments[1] ); // 如果对apply使用原理不了解可以使用该方法*/ 12 } // argument 是获取调用回调函数的实参 13 }; 14 } 15 // 以下是使用方式: 16 // 使用"error-first 风格" 回调设计 17 function foo(err,data) { 18 if (err) { 19 console.error( err ); 20 } 21 else { 22 console.log( data ); 23 } 24 } 25 ajax( "http://some.url.1", timeoutify( foo, 500 ) );
自定义一个ajax回调函数:
1 function ajax(url, fun) { 2 setTimeout(function() { 3 fun(null, 11) 4 }, 1000); // 1秒后执行回调函数 5 };