2016-07-15 61 views
1

我想獲取回調後,消息設置爲我的回調讀取文件是這樣的:如何編寫自定義的回調函數的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如果聲明/ –

回答

-4

嘗試將其傳遞時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

-3

使用此代碼:

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

相關問題