将块变量传递给已经有参数

时间:2016-06-29 09:26:27

标签: node.js parameters callback arguments scoping

这是我的回调:

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与服务对话,然后调用回调,向其传递服务响应。

如何将db引用放入我的回调evaluateServiceResponse

感谢。

2 个答案:

答案 0 :(得分:0)

使用闭包:

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

并使用如下:

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

答案 1 :(得分:0)

我相信这就是你想要的:

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