如何从async.waterfall返回调用抽象函数(nodejs)的结果对象

时间:2019-02-07 06:04:30

标签: node.js asynchronous return-value waterfall

我有一个nodejs服务器,托管用于Web应用程序的Web服务。我有一个路由终结点,该终结点落在nodejs函数上,该函数包含async.waterfall一组依赖函数调用。 async.waterfall函数正确执行(console.log显示正确的结果值),但是,我似乎无法将结果作为响应对象返回到Web服务调用。结果没有错误,也没有发送任何结果。 是否可以访问async.waterfall生成的结果对象或值?如果可以,怎么办?

我尝试在module.exports级别上使用回调,nodejs错误指出该回调不是函数。

var async = require ('async');
var getheaderinfo = require('../procedures/get_object_header');
var getattributes = require('../procedures/get_object_attrs');

module.exports = function job_detail(req, res) {

var lo_data = {
    "type":null,
    "code":null,
    "id":null,
    "title":null,
    "description":null,
    "attrs":[
        {
        "id":null,
        "name":null,
        "value":null
    }
    ],
};

lo_data.type = 4;
lo_data.code = req.params.job_id;

async.waterfall([

// Get job header
    function getheader(callback) {
        getheaderinfo(lo_data, function(cb_job_header){

            lo_data.id = cb_job_header.id;
            lo_data.title = cb_job_header.title;
            lo_data.description = cb_job_header.description;

            return callback(null, cb_job_header.id);

            });
    }, // Get job detailed attribution
    function getattrs(lookupid, callback) {

        getattributes(lo_data, function(cb_job_attrs){

            lo_data.attrs[0].id = cb_job_attrs[0].id;
            lo_data.attrs[0].name = cb_job_attrs[0].name;
            lo_data.attrs[0].value = cb_job_attrs[0].value;

            return callback(null, lo_data);

        })
    }
], 
    function(err, result) {
        if (result) {
            res.end(JSON.stringify(result));
        }
    } 
);
}

我希望结果对象(或lo_data对象)能够传递回进行调用的有角度的Web应用程序,并在UI中显示结果。

0 个答案:

没有答案