如何使变量存在于node.js代码块之外
How do I get a variable to exist outside of this node.js code block?
我是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请求返回错误的
相关文章:
- Meteor JS中代码的重复使用部分
- 骨干模型默认值-todos.js示例中不必要的代码
- 为什么indexOf在这个js代码中不起作用
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- js代码从jQuery转换为原生代码
- JS代码中的减号
- 将JS函数传递给Emscripten生成的代码
- 谷歌地图Api和JS代码不工作
- HTML 5 和 3.js 代码不会在网页上显示任何内容
- Node.js:异步代码 + js 闭包的问题
- Chrome 开发者工具 - 控制台.log原生代码 JS
- 为jQuery和KNOCKOUT通用化javascript代码.js成为一个可重用的模块
- .ninnerHtml代码(JS/JQuery)无法识别html表中的动态内容
- 生成唯一的6位代码js
- 我得到了“;赋值中的左侧无效“;在我的代码(JS)中
- 更改代码(JS)中JQuery Mobile Calendar日期的状态
- 如何改进代码JS(Jquery)?一个简单的下拉列表
- 从传输中了解代码.js
- 这段代码(JS)的区别是什么?
- JavaScript倒计时计时器代码[JS]