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);
prints
checkJson: undefined
What is incorrect here?
return out;
returns from your "complete" callback and not from checkUrl
. checkUrl
returns immediately (before the rest.get
returns). 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);
});
};
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.