Я использую sqlite3 в node.js и хочу создавать функции, возвращающие определенные данные.
Вот пример, в котором функция возвращает идентификатор последней вставленной строки.
Идентификатор получен правильно, и я могу вывести его в console.info, но как мне вернуть его значение в свою функцию, чтобы я мог его вернуть?
Все примеры, которые я нахожу, просто выводят здесь значение с помощью console.info.
_getLastInsertRowId = function () {
var id = 0;
var that = this;
db.get("SELECT last_insert_rowid() as id", function (err, row) {
id = row['id'];
//that.id = row['id']; //DOESN'T WORK
console.info(id); // shows correct id
//return row['id']; //DOESN'T WORK
});
return id; // DOESN'T WORK, ID IS ALWAYS 0
}
Вы не можете. Точно так же, как вы не можете читать завтрашнюю газету. (И я удивлен, что никто не проголосовал против этого, как некоторые люди делают с аналогичными вопросами от пользователей с низким уровнем репутации. Как показывает этот вопрос, асинхронный javascript - очень сложная концепция, которую трудно понять даже для продвинутых программистов)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не можете вернуть значение напрямую, вы либо используете обратный вызов, либо еще лучше используете обещания.