2016-06-29 3 views
0

Это мой обратный вызов:передать переменный блок на функцию обратного вызова, которая уже аргументы

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?

Спасибо.

ответ

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)); 
+0

Спасибо; что помогает :) – saab

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

Это неправильное решение. Я думаю, что «это». ссылка не может быть перенесена в тело обратного вызова. Вот почему я получил ошибку на: TypeError: Не могу прочитать свойство «оцениватьСервисResponse» неопределенного « – saab

+0

@saab вы правы. Function (err, response) изначально была функцией стрелки. В любом случае исправит исходный код. –

+0

Я не понимаю, что вы Это не тот же код, что и раньше, просто используя новый синтаксис или я что-то путаю? Я имею в виду, что даже здесь «это» будет неопределенным. – saab

Смежные вопросы