gpt4 book ai didi

javascript - 如何让变量存在于该 node.js 代码块之外?

转载 作者:行者123 更新时间:2023-12-02 15:28:31 24 4
gpt4 key购买 nike

我是 Node.js 的新手,我一直在拼尽全力地思考如何使用它。在此范围内,resp 可以很好地记录大量数据。除此之外,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 How to set a variable outside the current scope

Order of execution issue javascript

How to capture the 'code' value into a variable?

Nodejs Request Return Misbehaving

关于javascript - 如何让变量存在于该 node.js 代码块之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33511533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com