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 };

 

posted @ 2020-02-18 13:48  林中有风  阅读(435)  评论(0编辑  收藏  举报