Я борюсь с передачей концепции данных в Node.js. Давайте рассмотрим SQL как утомительный пример. Вот код из примеров:Передача аргументов через предопределенную функцию в Node.js
//acquire a connection
pool.acquire(function poolAcquire(err, connection) {
if (err) { console.error(err); return; }
//use the connection as normal
var request = new Request('select 1;select 2;select 3', function requestCallback (err, rowCount) {
if (err) { console.error(err); return;}
console.log('rowCount: ' + rowCount);
//release the connection back to the pool when finished
connection.release();
});
request.on('row', function onRequestRow(columns) {
console.log('value: ' + columns[0].value);
});
connection.execSql(request);
});
pool.acguire принимает функцию в качестве аргумента, и эта функция имеет определенную подпись (ERR, соединение)
Мой вопрос - как я могу передать SQL заявление внутри этой функции? Я не могу изменить подпись, потому что не вызывается другая функция.
Также я не могу использовать глобальную область видимости, поскольку переменную можно изменить вне.
Другими словами, мне нужно найти способ обходить вызовы оболочек и передавать некоторые данные.
Что-то вроде
var mySQLs = ['select 1;select 2;select 3','select 4;select 5;'];
async.forEach(mySQLs,WorkWithOneItem, AllIsDone);
function WorkWithOneItem(item, callback){
pool.acquire(?????(item));
callback(); // tell async that the iterator has completed
}
function AllIsDone (err) {
console.log('All done');
}