Как получить доступ к переменной за пределами области .then в nodejs - PullRequest
1 голос
/ 23 апреля 2020

Нужна помощь в этом.

Итак, у меня есть одна функция, из которой я возвращаю Обещание (на основе q). Теперь внутри второй функции я вызываю эту функцию, связывая ее с использованием .then, а теперь внутри этого. Затем я написал метод для некоторой манипуляции и на основании этого я ожидаю значение. После того, как это возвращенное значение, за пределами .then, мой код соединения с БД начинается Так что теперь проблема в том, что я не могу получить доступ к тому значению переменной, которое возвращается методом внутри .then, поэтому моя база данных, возвращающая данные, неверна.

В коде это выглядит так.

getSomeWarehouseData(){
return defer.promise
}

getOracleData(){

   getSomeWarehouseData().then(function(returnedValue){
      ***some data manipulation

      function getCustomizedDetails(){
      return data;
      }

      custom_data = getCustomizedDetails()

})//.then scope ends

// Unable to access custom_data outside the .then 

**** console.log(custom_data)// undefined****

**Oracle Code getting Started****

oracledb.getConnection(
{
***connection settings
},
function(err, connection)
{

***inside here I need to access the custom_data variable*** which is not accessible currently.

})

}

1 Ответ

0 голосов
/ 23 апреля 2020

Существует проблема с кодом с асин c Терминология javascript. Используйте вторую функцию внутри getOracleData с then.

getSomeWarehouseData() {
return defer.promise;};

getOracleData() {

getSomeWarehouseData().then(function (returnedValue) {
        // **
        // * some data manipulation

        function getCustomizedDetails() {
            return data;
        }

        custom_data = getCustomizedDetails();

        oracledb.getConnection({
            // **
            // * connection settings
        },
        function (err, connection) {

            // **
            // * inside here I need to access the custom_data variable ** * which is not accessible currently.
            console.log(custom_data);

        });

    }) ;//.then scope ends

    // Unable to access custom_data outside the .then 

    // **
    // ** console.log(custom_data) // undefined****

    // **
    // Oracle Code getting Started ** *};
...