0
我正在使用Node JS向數據庫發出請求。碰巧我正在做一個SELECT語句,我需要它的結果來做一個INSERT。在節點JS中同步循環
var index = 1;
async.whilst(
function() { return index < 10; },
function(callback) {
index++;
let line = csv_json[index][0].split(';');
let block = csv_json[index];
read_account(line);
callback(null, index);
},
function(err, n) {
if (err) throw err;
}
);
function read_account(csv, index) {
if (index == csv_json.length) return;
let line = csv_json[index][0].split(';');
let block = csv_json[index];
var account = line[0];
waterfall([
function(callback) {
connection.query('SELECT id FROM account WHERE account_number = ' + account,
function(error, results, fields) {
if (error)
throw error;
console.log(results);
callback(null, results);
});
},
function(results, callback) {
if (results == null || typeof results == undefined || results.length == 0) {
console.log("ENTREI");
connection.query('INSERT INTO account (account_number) VALUES (' + account + ')',
function(err, results, fields) {
callback(err, "1 account inserted!")
if (err)
throw err;
});
}
//else callback(null,"record already in db")
},
], function(err, success) {
if (err) throw err;
//console.log(success);
});
};
由於節點是異步的,結果我從插入從數據庫中的第一狀態越來越總是當我打電話讀帳戶()我怎樣才能讓這個過程同步?
謝謝
JS是異步的,但你要找的是使用結果的回調函數。 –
我知道它是異步的。我只需要調用read_account的函數是同步的。 –