2013-11-21 2 views
-1

У меня есть этот код:добавить аргументы обратного вызова

function addn (pathname, callback) { 
    fs.readFile(pathname, 'utf-8', function (err, data) { 
     fs.writeFile(pathname, data.replace(/>/g, '>\n'), function() { 
      callback(); 
     }); 
    }); 
}; 

Но когда я называю это

addn('path/to/file', anotherfunction(whichhavecallback(){}); 

Я получаю эту ошибку:

callback(); 
      ^
TypeError: undefined is not a function 
    at /path/to/my/js.js:610:13 
    at Object.oncomplete (fs.js:107:15) 

Он работал, когда я звоню просто как console.log, почему он выиграл т сейчас?

+0

Как вы писали синтаксически неверный код в вашем вопросе, сложно определить, что такое реальный код и, следовательно, ваша проблема. –

+0

Код, который вы указали, будет содержать ошибку с 'SyntaxError: Неожиданный токен {', прежде чем он даже попытается вызвать обратный вызов. – Quentin

+0

Вам нужно предоставить (минимальный) пример «другой функции» (чтобы мы могли видеть, что он возвращает) и замену вашего вызова на 'addn', который сам по себе не будет ошибкой. – Quentin

ответ

3

При передаче функции обратного вызова, вы опускаете (), иначе эта функция будет выполняться немедленно и бессмысленно, так что попробуйте:

addn('path/to/file', anotherfunction); 

И в вашем коде

callback(); //-< insert parameter here! 
+0

Dumb me, это было так, и у меня был почти весь остальной код. – DrakaSAN

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