2014-08-30 2 views
4

Я использую request npm для получения http-страниц. У меня есть что-то подобноеКак передать переменную вложенную функцию обратного вызова

function callbackFunction1() { 
    var p = 'foo'; 

    request(url, callbackFunction2); 
} 

function callbackFunction2(err, response, body){ 

} 

Как я могу передать переменную p в качестве параметра callbackFunction2?

+0

Вы можете поместить переменную p за пределы первой функции callbackFunction1, а затем использовать ее как нормальную переменную внутри callbackFunction2. –

+1

Это решит вашу проблему: http://stackoverflow.com/questions/13851088/how-to-bind-function-arguments-without-binding-this – eguneys

+1

Что такое 'p' в этой ситуации? Вы просто хотите полностью заменить параметр body или хотите передать его в качестве дополнительного параметра? – James

ответ

0

@facebook «s comment, они путь.

Использование bind

request(url, callbackFunction2.bind(p)); 
... 
console.log(this); // p 

Read @facebook «s ссылку, чтобы узнать, как сделать это, не портя this, если это имеет значение в вашем случае использования.

5

Я думаю, вам нужно указать все 3 параметра.

Вы можете передать анонимную функцию в качестве второго параметра, как пыльник

request(url, function(err, response, body){ 
    callbackFunction2(err,response, body, p); 
}); 
+1

Думаю, вам также нужно взять err и response как параметры в анонимной функции обратного вызова –

+1

параметры callbackFunction2 три, тогда я должен передать четыре параметра – Mazzy

+0

@Mazzy Я немного запутался, почему если вы передадите 4 параметра, когда функция ожидает всего 3 параметра, как вы это используете? – Mritunjay

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