[英]Javascript: method returns undefined when value is not undefined
I do 我做
if (program.url) {
checkJson = checkUrl(program.url, program.checks);
console.log('checkJson:', checkJson);
}
and 和
var checkUrl = function (url, checksfile) {
var checks = loadChecks(checksfile).sort();
rest.get(program.url).on('complete', function(data) {
var out = {};
$ = cheerioUrlData(data);
for (var ii in checks) {
var present = $(checks[ii]).length > 0;
out[checks[ii]] = present;
}
console.log(out); // <<-- This console
return out;
});
};
The console looks like 控制台看起来像
{ '.about': true,
'.blank': true,
'.faq': true,
'.footer': true,
'.heading': true,
'.logo': true,
'.navigation': true,
'.order': true,
'.pitch': true,
'.section1': true,
'.section2': true,
'.social': true,
'.subheading': true,
'.thermometer': true,
'.video': true,
h1: true }
but console.log('checkJson:', checkJson);
但是
console.log('checkJson:', checkJson);
prints 版画
checkJson: undefined
What is incorrect here? 这里有什么不对的地方?
return out;
returns from your "complete" callback and not from checkUrl
. 从您的“ complete”回调而不是
checkUrl
。 checkUrl
returns immediately (before the rest.get
returns). checkUrl
立即返回(在rest.get
返回之前)。 You need to use a callback to get the value you are looking for: 您需要使用回调来获取您要查找的值:
if (program.url) {
checkUrl(program.url, program.checks, function(result) {
console.log(result);
} );
}
and 和
var checkUrl = function (url, checksfile, callback) {
var checks = loadChecks(checksfile).sort();
rest.get(program.url).on('complete', function(data) {
var out = {};
$ = cheerioUrlData(data);
for (var ii in checks) {
var present = $(checks[ii]).length > 0;
out[checks[ii]] = present;
}
console.log(out); // <<-- This console
callback(out);
});
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.