2014-09-04 7 views
-1

Я хочу знать, как вызвать родительскую функцию return в дочерней функции.Как получить вызов функции вызова из вызываемой функции в node.js?

app.get('/path', function(req, res, next) { 
     var result = child('test_Val', next); 

     return res.send(200); 
    }); 

function child(arg1, next) { 
    if (condition) { 
     //I want to call return parent function with next() here. 
    } 
} 

Возможно ли это?

+1

Вы не имеете в виду функцию «parent» и «child», вы имеете в виду функцию «вызов» и «вызов». Нет, вы не можете видеть вызывающую функцию от вызываемой функции. Если вы хотите это сделать, значит, что-то не так с вашей логикой. Что вы подразумеваете под «call return parent function»? – 2014-09-04 16:58:47

ответ

1

К предисловию, вы действительно не должны этого делать. Ваш вопрос почти наверняка означает, что вы разрабатываете что-то неправильно, и это приведет к отключению больших оптимизаций в версии 8.

Но вы можете это сделать.

Изнутри функции доступна волшебная переменная arguments. Это массив, который содержит все аргументы этой функции. Кроме того, он имеет некоторые интересные свойства - один из которых - callee. Это ссылка на функцию, в которой вы сейчас находитесь. Она также имеет несколько интересных свойств. Один из них - arguments, который указывает на исходный объект arguments. Тот, который мы ищем, - caller.

Таким образом, изнутри функции arguments.callee.caller является ссылкой на вызывающую функцию.

Опять же, пожалуйста, не делайте этого. Вы должны задать другой вопрос с большим контекстом, чтобы кто-то мог помочь вам решить настоящую проблему.

+1

(С предостережением, что 'вызываемый' не разрешен в строгом режиме.) –

+0

спасибо. Я буду перепроектировать логику, зависит от вашего предложения. – user3867387

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