【发布时间】:2019-02-21 13:20:49
【问题描述】:
我已经在 node 模块上工作了很长一段时间,并意识到如果我想要一个同步和异步函数,我必须用不同的方式来调用函数。
就在我调用回调函数之前,如果我 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;
}
感谢您的帮助!
【问题讨论】:
-
error.json文件是什么样的?您能否编辑您的问题以包含一个示例? -
另外,你为什么将
async函数与回调混合在一起? -
@Soviut,error.json 文件看起来像这样:
{"errorBool": false}除非有自定义错误,在这种情况下它看起来像这样:{"errorBool": true, "msg": 'A string'}(我也会编辑我的问题)。另外,这是我第一次尝试创建async函数,所以我正在试验。
标签: javascript node.js asynchronous node-modules