利用异步 NPM 模块

Utilizing Async NPM Module

本文关键字:模块 NPM 异步      更新时间:2023-09-26

所以...我最近遇到了这个节点模块:异步。我只需要一点"展示和讲述"或最佳实践方法,以应对我在下面遇到的情况。下面你可以看到我的函数GetBearerToken它接受一个参数{bearer_token:token}没有问题。

我的问题是变量ss.我想在这个函数之外使用它,并将其传递给另一个函数来做某事。当然,当我尝试访问ss时,它是未定义的。我已经尝试了一些使这项工作的方法,如文档中所示,但我显然错过了一些东西。所以任何帮助都会很棒...谢谢

GetBearerToken({
      bearer_token: token
    }, function(error, result) {
      if (error) throw error;
      if (result) {
        var resultset
        var i;
        for (i = 0; i < result.length; i++) {
          resultset = (simpleObjectify(result[i].meta, result[i].rows))
        }
        var jstring = JSON.stringify(resultset);
        var obj = JSON.parse(jstring);
        var ss = obj[0].uuid;
        console.log(ss)
      })

功能ss之外是undefined

首先阅读此内容

JavaScript 中变量的作用域是什么?


您可以尝试使用.waterfall方法

瀑布(任务,[回调])

以系列形式运行函数的任务数组,每个函数都传递其 结果到数组中的下一个。但是,如果任何任务通过 错误到自己的回调,下一个函数没有执行,并且 主回调立即被调用并出现错误。

您要完成的一个例子

async.waterfall([
      function(callback) {
        GetBearerToken({
              bearer_token: token
            }, function(error, result) {
              if (error) throw error;
              if (result) { // *note* don't forget to handle the result properly if an error occurs or the result is not what you expected.
                var resultset
                var i;
                for (i = 0; i < result.length; i++) {
                  resultset = (simpleObjectify(result[i].meta, result[i].rows))
                }
                var jstring = JSON.stringify(resultset);
                var obj = JSON.parse(jstring);
                var ss = obj[0].uuid;
                callback(null, ss); // call the next callback in waterfall with ss value
              }
            )
          },
          function(arg1, callback) {
            // arg1 now equals ss value 
            callback(null,'all completed');
          }
      ],
      function(err, result) {
        // result now equals 'all completed'
      });

但是由于上面的代码似乎已经朝着错误的方向迈出了一步,当它来调试。但是看一下.waterfall的例子,它分解了回调,然后调用了.waterfall方法。