首页 > 解决方案 > 带有回调函数的Javascript异步方法问题

问题描述

有以下调用库:

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

提前致谢

标签: javascriptasynchronouscallback

解决方案


// 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)

})

推荐阅读