如何编写自定义的回调函数的js

如何编写自定义的回调函数的js

问题描述:

我想获取回调后,消息设置为我的回调读取文件是这样的:如何编写自定义的回调函数的js

exp.getServerHandler=function (request,response){ 

    if(request.url.startsWith("/static/")){ 
     //passing my custom callback function as an input param 
     fileReadHandler(request,response,function callback(message){ 
      console.log(message); 
     }); 
    } 
}; 

function fileReadHandler(request,response,callback){ 
    fs.readFile(request.url.substr(1), 
     function(err,data) { 
      if(err){ 
       response.end("bad request"); 
       response.statusCode=400; 
       //here i want to set message as my callback param 
       callback("failed"); 
      }else{ 
       response.end(data); 
       //here i want to set message as my callback param 
       callback("successful"); 
      } 
     } 
    ); 
} 

但控制台没有登录我的回调的消息!哪里有问题?这是做这件事的正确方法吗?

编辑:

这个代码工作正常,并正确

+0

你能告诉我你怎么称呼你的功能吗? –

+0

@AlexanderNovikov哪个功能? getServerHandler或..? –

+0

exp.getServerHandler,你确定你传递了所有必要的参数吗?因为它可能在第一次评估为false如果声明/ –

尝试将其传递时fileReadHandler这样除去callback函数名称:

exp.getServerHandler=function (request,response){ 

    if(request.url.startsWith("/static/")){ 
     //passing my custom callback function as an input param 
     fileReadHandler(request,response,function(message){ 
      console.log(message); 
     }); 
    } 
}; 

function fileReadHandler(request,response,callback){ 
    fs.readFile(request.url.substr(1), 
     function(err,data) { 
      if(err){ 
       response.end("bad request"); 
       response.statusCode=400; 
       //here i want to set message as my callback param 
       callback("failed"); 
      }else{ 
       response.end(data); 
       //here i want to set message as my callback param 
       callback("successful"); 
      } 
     } 
    ); 
} 
+1

___NO___错误的猜测....它总是会调用参数.. – Rayon

+0

即时通讯初学者在js,但因为我知道函数回调(...)和功能(... )!但我试过并没有帮助 –

+0

是的,当然。这个我太快了! – MartinHN

使用此代码:

exp.getServerHandler=function (request,response){ 
    if(request.url.startsWith("/static/")){ 
     //passing my custom callback function as an input param 
     fileReadHandler(request,response,function callback(message){    
      if (window.console && window.console.log) 
       window.console.log(message); 
     }); 
    } 
}; 
  1. 检查控制台对象,因为eq。只有在控制台窗口打开的情况下才提供IE控制台对象
  2. 使用完整路径window.console
+0

它没有帮助 –

+0

该帖子标有Node.js标签。节点没有'window'对象。 – Pointy