问题描述
我已经在节点模块上工作了一段时间了,并且意识到如果我想要一个同步和异步函数,我将不得不以一种不同的方式来调用该函数。
在我调用回调函数之前,如果我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;
}
谢谢你的帮助!
1楼
Jayakar
0
2019-02-21 05:06:15
我有一个小答案,即我们使用JSON.parse()
解析字符串。
来自Web服务器的数据始终是字符串。 要将其转换为对象,我们使用此parse方法。
但是在您的问题中,我认为服务器没有任何内容。
如果没有来自服务器的数据,则此JSON.parse()
方法将返回默认参数。
即[Object Object]
。
这是我的观点。 请检查一次。
2楼
MjZac
0
2019-02-21 05:12:48
您应该使用console.dir
查看对象的属性。
MDN
显示指定JavaScript对象的属性的交互式列表。 输出显示为带有显示三角形的层次结构列表,可让您查看子对象的内容。