NodeJs 在使用异步瀑布时面临的问题

NodeJs facing the issue while using async waterfall

我一个接一个地调用 2 API 请求 1 所以我决定使用瀑布模型,但我遇到了其中的问题

我试了很多都没有解决问题

下面是我的代码:

var unirest = require("unirest");
var async = require("async")

exports.user = (req, res, next) => {
    const qry = req.params.id
    async.waterfall([
        (nextCall) => {
            var req = unirest("GET", API_URL1);
            req.query({
               // some query
            });
            req.headers({
               // some headers 
            });
            req.end(function(subCount) {
                // if (resp.error) throw new Error(resp.error);
                var channelSubCount = subCount.body
                nextCall(null, data)
            });
        },
        (data, nextCall => {
            console.log(channelSubCount, 'data')
            var reqs = unirest("GET", API_URL2);

            reqs.query({
              // some query
            });

            reqs.headers({
                // some headers
            });

            reqs.end(function(res) {
                // if (res.error) throw new Error(res.error);
                console.log(res.body);
                return nextCall(null, {
                    name: 'abc',
                    photo: 'src',
                    count: data
                })
            });
        })
    ], function(finalData) {
        // if (error) { alert('Something is wrong!'); }
        console.log('final')
        res.status(200).json(
            finalData
        );
    });
};

错误: 引用错误:数据未定义

我不明白为什么会这样。

还有一些请告诉我通过优化实现上述内容的正确方法。

感谢任何帮助...

您似乎忘记在第二个箭头函数定义中关闭括号:

(data, nextCall => {

它仍然是一个有效的 JavaScript,但是解释器现在不再将 data 视为函数传入参数(如您需要),而是将其视为变量。但它没有在任何地方定义,因此你有那个错误。

像这样就可以了:

(data, nextCall) => {