如何使变量存在于node.js代码块之外

How do I get a variable to exist outside of this node.js code block?

本文关键字:代码 js node 何使 变量 存在      更新时间:2023-09-26

我是node.js的新手,我一直在拼命思考如何使用它。除此之外,mydata是未定义的。我不明白为什么会这样,我希望有人能帮我从代码块中获取resp数据。

    var mydata = this.get_json((_servers[i].ip + "/job/" + _servers[i].job + "/lastCompletedBuild/testReport/api/json"), function (resp) {
        console.log(resp);
    });
    console.log(mydata)

您的函数是异步的。这意味着this.get_json()调用只是启动操作,然后继续执行Javascript。然后,稍后某个时间,当网络响应返回时,它会调用回调函数。

因此,您唯一可以使用响应的地方是回调内部。您可以从回调内部调用另一个函数并将数据传递给它,但不能在函数之后的代码中使用数据。

this.get_json((_servers[i].ip + "/job/" + _servers[i].job + "/lastCompletedBuild/testReport/api/json"), function (resp) {
    // use the response here
    console.log(resp);
    // or call some other function and pass the response
    someOtherFunc(response);
});
// you cannot use the response here because it is not yet available

这被称为异步编程,是node.js编程的核心原则,因此当使用通过异步回调返回结果的异步操作时,您必须学习如何做到这一点,并且必须调整您的编程风格以使其以这种方式工作。这绝对不同于纯粹的顺序/同步编程。这是使用node.js.时需要学习的新内容

有更先进的异步响应编程工具,如promise,在尝试协调多个异步操作时尤为重要(对它们进行排序、并行运行并知道何时完成、传播错误等)

你可能会发现这些相关的答案很有用:

Node.JS如何设置当前范围之外的变量

执行顺序问题javascript

如何捕获';代码';值转换为变量?

Nodejs请求返回错误的