[英]get variable located inside callback function
var request = require('request');
var options = {
url: 'https://api.github.com/repos/request/request',
headers: {
'User-Agent': 'request'
}
};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
console.log(info.stargazers_count + " Stars");
console.log(info.forks_count + " Forks");
}
}
exports.parse = function(){
request(options, callback);
}
嗨,我如何获取位于callback
函数内的info
变量。 抱歉,我是JS的初学者,在我的大脑/和平中找不到答案
回调函数用于处理非阻塞的异步性质。 当作业阻塞I / O时,只需将其放入任务队列并向前移动。 完成任务后,就该触发回调函数了,我们可以用我们想要的任何方式来处理那些返回的值。 那就是使用回调函数。 您可以阅读有关事件循环的详细信息。
在这里,您必须传递自定义回调函数以正确处理该方案。
var request = require('request');
var options = {
url: 'https://api.github.com/repos/request/request',
headers: {
'User-Agent': 'request'
}
};
exports.parse = function(cb){
request(options, cb);
}
在您要使用parse方法的地方,使用这样的方法。
parse(function(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
console.log(info.stargazers_count + " Stars");
console.log(info.forks_count + " Forks");
// TODO with info
}
});
在更高范围内声明变量将使其可访问。 在调用回调之前,更高范围中的值将不会更新。
var result = {};
function callback(error, response, body) {
if (!error && response.statusCode == 200) {
result.info = JSON.parse(body);
console.log(result.info.stargazers_count + " Stars");
console.log(result.info.forks_count + " Forks");
}
}
如果您的目标只是简单地解析您的正文并轻松获得已解析的JSON,则应考虑使用诸如body-parser之类的中间件。 这是一种标准模式...例如,考虑以下代码:(来自https://github.com/expressjs/body-parser )
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
app.use(function (req, res) {
res.setHeader('Content-Type', 'text/plain')
res.write('you posted:\n')
res.end(JSON.stringify(req.body, null, 2))
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.