Проблема асинхронного метода Javascript с функцией обратного вызова - PullRequest
0 голосов
/ 27 апреля 2018

Иметь следующую библиотеку:

var rd = require('redis.dump')

используется в функции для запроса базы данных и некоторой обработки, а затем возвращает

function query(type, row, column){
  var output = []
  ...
  rd({
      filter: ...
      port  : ...
      format:  ...
      },
      function(err, result){
       [where the processing of result begins]
       ...
       output = [processed result]
       ...
      }
     });
  return output;
  }

Как выйти из асинхронного режима, чтобы дождаться окончания rd и затем вернуть результат? Я попробовал следующее и потерпел неудачу:

function query(type, row, column){
  var output = []
  ...
  rd({
      filter: ...
      port  : ...
      format:  ...
      },
      async function convert(err, result){
       [where the processing of result begins]
       ...
       output = [processed result]
       ...
      }
     });
  rd.convert.then(return output);
  }   

с ошибкой типа:

TypeError: Cannot read property 'then' of undefined

Заранее спасибо

1 Ответ

0 голосов
/ 27 апреля 2018
// replace your code into this 
function query(type, row, column,cb){
  var output = []
  ...
  rd({
      filter: ...
      port  : ...
      format:  ...
      },
      function(err, result){
       [where the processing of result begins]
       ...
       output = [processed result]
       // call callback function and pass output result
       cb(output)
      }
     });
  }

// для вызова этой функции напишите

query(type, row, column,function(output){
  console.log(output)

})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...