Как получить значение переменной из закрытия async JavaScript в функции sqlite3?

Я использую 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
  }

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

Keith 07.06.2018 16:58

Вы не можете. Точно так же, как вы не можете читать завтрашнюю газету. (И я удивлен, что никто не проголосовал против этого, как некоторые люди делают с аналогичными вопросами от пользователей с низким уровнем репутации. Как показывает этот вопрос, асинхронный javascript - очень сложная концепция, которую трудно понять даже для продвинутых программистов)

Jonas Wilms 07.06.2018 16:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
11
0

Другие вопросы по теме