Функционально ваш текущий код выглядит нормально, за исключением того, что вы не должны вызывать функцию как callback , если она не является асинхронной функцией.
Обратные вызовы обычно связаны сАсинхронные API.Это полезно, если вы хотите, чтобы main(...)
немедленно вернулся, чтобы вы могли просто продолжить что-то еще.Поскольку это поведение по умолчанию, API имеет значение
fs.writeFile(filename, data[, options], callback)
. Таким образом, для преобразования вашей программы в асинхронное вам необходимо:
fs = require("fs");
function main(callback) {
// Oops. Why is query executed synchronously?
query = sqlSync() ;
fs.writeFile('delete.json', "Data", callback);
}
main(() => console.log("Done"))
Вы также можете преобразовать вызовы SQL в асинхронные, если ваши APIподдержите это (поскольку это операция ввода-вывода).
Как только вы освоитесь с обычными обратными вызовами, вы можете попробовать использовать promise
или async-await
, как упоминалось здесь .