我有这样的代码,并希望在函数中将一个变量分配给另一个,代码示例:
Meteor.methods({
parsing:function(){
var aa ;
request("https://google.com/", function(error, response, body) {
if (!error && response.statusCode == 200) {
var k=1;
aa = k;
}
});
console.log(aa);
}
});
它是undefined
,有人能解释我为什么吗?
编辑:
Meteor.methods({
parsing:function(){
var aa ;
var tmp;
request("https://google.com/", function(error, response, body) {
if (!error && response.statusCode == 200) {
var k=1;
aa = k;
console.log(aa);
request("https://google.com/xyz", function(error, response, body) {
tmp = response.request.uri.href;
});
}
console.log(tmp);
});
}
});
例如,只有当我的第二个请求被调用(结束)时才需要console.log(tmp);
答案 0 :(得分:0)
您提供的request
参数功能只有在请求获得Google答案时才会执行。但代码的下一部分(你的console.log
行)仍在执行而不等待任何事情。
如果您想在日志前等待请求结果,请将其添加到您的函数中:
parsing:function(){
var aa ;
request("https://google.com/", function(error, response, body) {
if (!error && response.statusCode == 200) {
var k=1;
aa = k;
console.log(aa);
}
});
}
嗯,你可以多次使用相同的技术:
parsing:function(){
var aa ;
var tmp;
request("https://google.com/", function(error, response, body) {
if (!error && response.statusCode == 200) {
var k=1;
aa = k;
console.log(aa); // Waited the first answer.
request("https://google.com/xyz", function(error, response, body) {
tmp = response.request.uri.href;
console.log(tmp); // Waited the second one.
});
}
});
}