如何在Node.js中将值从子函数返回到父函数?

时间:2016-08-04 13:10:15

标签: javascript node.js asynchronous arangodb

我想要一个从子函数到Node.js中父函数的值,并在另一个文件中使用该值。作为异步流,d.promise的输出正在等待 如何通过d.promise文件中arangoFunction.js变量中queryCheck文件中传递的数据获得site.js的值?

使用的数据库:ArangoDB

site.js代码段

var arangoFunc = require('./arangoFunction'), queryCheck;
queryCheck = arangoFunc.saveData(data, roleCollection, res);
console.log(queryCheck);

arangoFunction.js片段

var q = require('q');
var d = q.defer();
    exports.saveData = function(data, collectionName, res){
          var collectionData = db.collection(collectionName);
          collectionData.save(data, function(e, o){
              if(e) {
                console.error(e);
                res.status(e.response.statusCode).send(e.response.statusMessage);
                d.reject(false);
              }
              else {
                res.send(data);
                d.resolve(data);
              }
            });
            return d.promise;
        }

输出site.js代码段

{ state: 'pending' }

1 个答案:

答案 0 :(得分:1)

arangoFunction.js

exports.saveData = function(data, collectionName, res){
  var collectionData = db.collection(collectionName);
  return q.Promise(function(resolve, reject, notify){
    collectionData.save(data, function(e, o){
      if(e) {
        console.error(e.response.statusMessage);
        res.status(e.response.statusCode).send(e.response.statusMessage);
        reject(e);
      }
      else {
        res.send(data);
        resolve(data);
      }
    });
  });
}

site.js

arangoFunc.saveData(data, roleCollection, res).then(function(value){
 // do whatever with the returned data
}, function(err){
 // error handling
});