我已经在节点模块上工作了很长时间,并且意识到如果我想要一个同步和异步功能,我将不得不以一种不同的方式来调用该功能。
就在我调用回调函数之前,如果我进行console.log记录,它可以正常工作并作为对象输出。记录typeof也表示它是一个对象。但是,一旦到达另一端,到test.js文件,它总是输出为
[对象对象]
如果我记录了typeof,则表示它是一个对象。如果我尝试记录它的任何值,它将无法工作。这样的两个对象组成的数组
[对象对象],[对象对象]
如果我使用JSON.stringify(),它可以正常工作,但我想将其输出为已解析。
注意:我仍然可以访问文件中的值。
代码:
test.js(我的测试文件)
var val;
instances.findInstance(config, function(err, res){
if (err){
arkin.error(err);
}
val = res;
});
console.log('\n\nOUT\n' + val.failures[0].failure);
index.js(函数将位于其中的文件)
module.exports.findInstance = async function(config, callback){
var returned = instances.find(config);
const errorJson = JSON.parse(fs.readFileSync(__dirname + '/error.json', 'utf8'));
end(); //Deletes the JSON files
if (globalError === true){
let err = new Error(JSON.stringify(errorJson));
if (!err){
err = 'An unknown error occured';
}
returned = undefined;
callback(err, returned);
}else{
let err = undefined;
callback(err, returned);
}
}
main.js(先前的index.js。用于处理退货的代码段)
//RESULTS
let result = JSON.parse(fs.readFileSync('./results.json', 'utf8'));
if (globalError === true){
return 'ERROR';
}else{
return result;
}
感谢您的帮助!
答案 0 :(得分:0)
我有一个简单的答案,即我们使用JSON.parse()
来解析字符串。
来自Web服务器的数据始终是字符串。要将其转换为对象,我们使用此parse方法。
但是在您的问题中,我认为服务器没有任何内容。如果没有来自服务器的数据,则此JSON.parse()
方法将返回默认参数。即[Object Object]
。
这是我的观点。请检查一次。
答案 1 :(得分:0)