将块变量传递给已有参数的回调函数

Pass a block variable to a callback function that has already arguments

这是我的回调:

function evaluateServiceResponse(err, response){
  db.answerCollection.insert({id: response["serviceAnswer"]["id"]}); //problem is this line

}

这是我的回调用户:

mysoapclient.invokeServiceMethod(jsonRecords,this.evaluateServiceResponse);

这是完整的代码。在 process 中,我创建了一个对我的数据库的块引用:

process(function(){
  ...
  let db=null;
  db = mongoClient.connect(connectionURL); 
  //Do whatever to create jsonRecords
  mysoapclient.invokeServiceMethod(jsonRecords,this.evaluateServiceResponse);
  ...
});

invokeServiceMethod 与服务对话,然后调用回调将服务响应传递给它。

如何在我的回调中获取数据库引用 evaluateServiceResponse

谢谢。

使用闭包:

function evaluateServiceResponse(db){ 
 return function(err, response){
  db.answerCollection.insert({id: response["serviceAnswer"]["id"]}); //problem is this line
}
}

并像这样使用:

 mysoapclient.invokeServiceMethod(jsonRecords,this.evaluateServiceResponse(db));

我相信这就是你想要的:

function evaluateServiceResponse(err, response, db){
  db.answerCollection.insert({id: response["serviceAnswer"]["id"]}); //problem is this line
}



process(function(){
  let db=null;
  db = mongoClient.connect(connectionURL); 
  //Do whatever to create jsonRecords
  mysoapclient.invokeServiceMethod(jsonRecords, (err, response) => {
    return this.evaluateServiceResponse(err, response, db);
  });
});