В Nodejs практически нет операций блокировки ввода-вывода. Это означает, что почти весь код ввода-кода nodejs включает много обратных вызовов. Это относится к чтению и записи в/из баз данных, файлов, процессов и т.д. Типичным примером этого является следующее:
var useFile = function(filename,callback){
posix.stat(filename).addCallback(function (stats) {
posix.open(filename, process.O_RDONLY, 0666).addCallback(function (fd) {
posix.read(fd, stats.size, 0).addCallback(function(contents){
callback(contents);
});
});
});
};
...
useFile("test.data",function(data){
// use data..
});
Я ожидаю написать код, который сделает операции много операций ввода-вывода, поэтому я ожидаю, что вы напишите обратные вызовы many. Мне очень нравится использовать обратные вызовы, но меня беспокоит вся рекурсия. Могу ли я столкнуться с чрезмерной рекурсией и выдуть где-нибудь в стек? Если я сделаю тысячи отдельных записей в моем хранилище ключей с тысячами обратных вызовов, моя программа в конечном итоге потерпит крах?
Я недопонимаю или недооцениваю влияние? Если нет, есть ли способ обойти это, продолжая использовать стиль кодирования обратного вызова Nodejs?