2017-06-14 101 views
0
triviaCtrl.answer = function(req, res) { 
    //console.log(req.query.name); 
    var data = {}; 
    var pointdata = {}; 
    var datas = { 
    "Status": 0, 
    "Message": "" 
    }; 
    return new Promise((resolve, reject) => { 
    var newAnswer = function(cb) { 
     data.questionId = req.query.questionId; 
     data.userId = req.query.userId; 
     data.correctAnswer = req.query.correctAnswer; 
     data.userAnswer = req.query.userAnswer; 
     data.type = req.query.type; 
     data.point = req.query.point; 
     Answer.create(data, cb); 
    } 
    var checkuserpoint = function(cb) { 
     Point.findOne({ 
     userId: req.query.userId 
     }, function(err, result, cb) { 
     if (result) { 
      result.availablePoint = Number(result.availablePoint) + Number(req.query.point); 
      result.totalWinPoint = Number(result.totalWinPoint) + Number(req.query.point); 
      result.save(cb); 
     } else { 
      pointdata.userId = req.query.userId; 
      pointdata.totalWinPoint = req.query.point; 
      pointdata.redeemPoint = 0; 
      pointdata.availablePoint = req.query.point; 
      Point.create(pointdata, cb); 
     } 
     }); 
    } 

    async.waterfall([newAnswer, checkuserpoint], function(err, result) { 
     if (err) { 
     //reject(err); 
     datas["Status"] = 0; 
     datas["Message"] = err; 
     res.json(datas); 
     } else { 
     datas["Status"] = 1; 
     datas["Message"] = result; 
     res.json(datas); 
     } 
    }); 
    }); 
} 

如果我从那里删除“newAnswer,checkuserpoint”一个函数,它正在工作,但是当我一起使用它时,它不会给出任何响应。但功能正常异步回调不能正常呼叫

+0

我没有看到你曾经“解决”或“拒绝”你回报的诺言。 – Thomas

回答

0

第二和进一步的功能传递给以前的温控功能的回调

async.waterfall带参数见arg1arg2在第2个功能。

async.waterfall([ 
    function(callback) { 
     callback(null, 'one', 'two'); 
    }, 
    function(arg1, arg2, callback) { 
     // arg1 now equals 'one' and arg2 now equals 'two' 
     callback(null, 'three'); 
    }, 
    function(arg1, callback) { 
     // arg1 now equals 'three' 
     callback(null, 'done'); 
    } 
], function (err, result) { 
    // result now equals 'done' 
}); 
+0

这就是为什么我没有得到任何回应时,我同时使用两个功能? – chandar

+0

cb(null,req);在newAnswer和checkuserpoint中。 if(result) { result.save(cb); cb(null,result); } else { cb(null,pointdata); } 现在它返回新的错误“TypeError:cb不是函数。” – chandar