Вы вызываете функцию buildPages
с аргументом функции, даже если думаете, что вы не настроили ее для принятия какого-либо аргумента.Вот почему функция внутри не вызывается.
Просто добавьте функцию обратного вызова в качестве аргумента в buildPages
и вызовите эту функцию обратного вызова, как только вы закончите со всеми задачами в buildPages
const fs = require('fs');
const path = require('path')
const chai = require('chai');
const chaiExpect = chai.expect;
const logger = require('../../../../app/logger/winston');
const pageFolder = 'app/views/pages';
let pages = [];
fdescribe('html pages', function () {
buildPages(function () {
console.log(pages);
});
console.log(pages)
})
function buildPages(callback) {
filewalker(pageFolder, function (err, pageList) {
if (err) {
throw err;
}
pageList.forEach(function (file) {
if (!fs.file.isDirectory) {
fs.readFileSync(file.substring(39), 'utf8', function (err, pageContents) {
if (err) throw err;
pages.push({ file: file.substring(39), page: pageContents })
})
}
})
callback();
});
}
Но я настоятельно рекомендую, чтобы, еслиВы хотите получить некоторые данные из другой функции.Не используйте глобальную переменную, поскольку вашему коду будет сложно поддерживать больше вещей, которые вы добавляете в нее, вместо этого передавайте свои данные в качестве аргумента.
function functionWithResult(callback) {
setTimeout(() => {
var result = [1,2,3,4,5]
callback(result)
}, 1000)
}
functionWithResult(function(result) {
console.log(result)
});