首页 > 解决方案 > 如何在 extractIssueData 中使用文件路径?

问题描述

我正在使用请求 NPM 包,请求接受两个参数请求(URL、回调);

在这里,我想以某种方式将额外的参数传递给我的回调函数,我该怎么做。这是我正在尝试编写的代码

 function extractIssues(url,filepath){
    
    request(url,issueCb);
}

function issueCb(err,response,html)
{
  if(err){
      console.log(err+"at line 61");
  }
  else{
     extractIssueData(html);
  }
     
}
function extractIssueData(html){
  let selTool = cheerio.load(html);
  let arr = [];
  let issueLinksArr = selTool(".flex-auto.min-width-0.p-2.pr-3.pr-md-2 > a");
  
  let result="";
  for(let i = 0;i<issueLinksArr.length;i++){
     let issueLink = selTool(issueLinksArr[i]).attr("href");
     let content = selTool(issueLinksArr[i]).text().trim().split("/n")[0];
    
     let obj = {
        link :issueLink,
        content:content
     }
     
    let str = JSON.stringify(obj);
    result = result + str + " ,"+ "\n" ; 

  }
       
  console.log(result);
   
}

我想在 extractIssueData 中使用文件路径,所以我需要首先在 issueCb 中捕获它我该怎么做我找不到正确的答案。

标签: javascriptnode.js

解决方案


我可以为您创建一个使用回调函数的简单示例。这是我知道的一个愚蠢的例子,但它可以帮助你理解回调是如何工作的。

function myFunc(callback) {
  let errMessage = "This is error callback";
  let message = "This is normal message";
  callback(errMessage, message);
}

function myCallbackFunc(err, result) {
  if(!err) {
    console.log(result);
    return;
  }
  console.log(err);
}

myFunc(myCallbackFunc);

你不会像这样使用它,但是如果你想发送一个错误回调,你应该 null 到响应参数。像这样:

function myFunc(callback) {
  let errMessage = "This is error callback";
  let message = "This is normal message";
  let somethingBadHappened = true;
  
  if(somethingBadHappened) {
    return callback(errMessage, null);
  }
  callback(null, message)
}

function myCallbackFunc(err, result) {
  if(!err) {
    console.log(result);
    return;
  }
  console.log(err);
}

myFunc(myCallbackFunc);

推荐阅读