【问题标题】:JavaScript, how to return a value I can only see in console? [duplicate]JavaScript,如何返回我只能在控制台中看到的值? [复制]
【发布时间】:2018-04-18 00:44:41
【问题描述】:

我完全知道这可能在另一个线程中有所涉及,但是,我是 JavaScript 和 Node 的新手,并不完全确定我在寻找什么。

我正在使用一个名为 Domo 的表示层,并尝试访问他们的 API 以导出数据。访问他们的数据的一部分是建立一个令牌来连接。

我已经成功地进行了调用并在控制台记录了该值,但我无法将值推送到诸如数组之类的对象。我相信这是一个匿名函数,并且一直在寻找一种方法来使用它。我的研究涵盖了闭包、回调、让、返回和立即调用的函数,但我在这里遗漏了一些东西。谁能指出我正确的方向?

**Here is the code:**
var http = require("https");

var tokenoptions = {
"method": "GET",
  "hostname": "api.domo.com",
  "port": null,
  "path": "/oauth/token?grant_type=client_credentials&scope=data%20user",
  "headers": {
              "Accept":"application/json",
              "Authorization": "Basic MyClientAndSecretGoesHere"
              }
}

var req = http.request(tokenoptions, function (res) {
  var chunks = [];
  var token = [];

 res.on("data", function (chunk) {
                    chunks.push(chunk);

                                  });

 res.on("end", function () {
                body = Buffer.concat(chunks);
                 console.log(body.toString());
                           });

});
req.end();  

**End Code**

Console.log(body.toString()) 是我想要的值,但我如何将它分配给数组或对象?这是一个匿名函数吗?

如果这是重复的帖子,我将非常感谢您的帮助并提前道歉。随着这个网站的年龄,我看不出任何新帖子是不可能的。

【问题讨论】:

  • 为什么需要将它存储在数组中?为什么不能将其存储在变量中?
  • 将其分配给数组:var arr = [body.toString()]。请记住,无论您想对该值做什么,都必须在该回调函数中执行。
  • 函数是匿名的并不重要,重要的是它被异步调用
  • 谢谢你们,我认为它应该是数组的原因是返回的元素数量。请求的令牌作为包含下一个 HTTP 请求的所有元素的 JOSN 接收。希望我说的是正确的,下面是返回值的示例。 { "access_token":"NewToken" "token_type":"bearer", "expires_in":3599, "scope":"data user", "customer":"MyURL", "env":"prod3", "userId" :”MyUser”, “role”:“Admin”, “jti”:“SomeCodeHere” }

标签: javascript domo


【解决方案1】:

如果我理解正确,您会希望数据是在回调之外使用的 Javascript 对象。我已阅读 Domo API 文档,希望对您有用:

var http = require("https");

var tokenoptions = {
    "method": "GET",
    "hostname": "api.domo.com",
    "port": null,
    "path": "/oauth/token?grant_type=client_credentials&scope=data%20user",
    "headers": {
        "Accept":"application/json",
        "Authorization": "Basic MyClientAndSecretGoesHere"
    }
}

var req = http.request(tokenoptions, function(res) {
    var chunks = [];
    var token = [];

    res.on("data", function(chunk) {
        chunks.push(chunk);
    });

    res.on("end", function() {
        body = Buffer.concat(chunks);
        nextAction(JSON.parse(body.toString()));
    });
});

req.end();

function nextAction(obj) {
    console.log(obj);
}

【讨论】:

  • 谢谢!上面的答案很完美。我是新来的,但非常感谢帮助克服这一挫折。我还发现放置一个返回函数可以让我保留该值。 res.on("end", function () { body = Buffer.concat(chunks); Token Function(returntoken){ return Token(); } //console.log(body.toString()); }); }); req.end();
猜你喜欢
  • 2013-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 2014-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多