不确定问题是对还是错。让我描述一下问题以便更好地理解。考虑一个多层次的JSON对象,其中键具有随机的英文文本字符串作为它们的值。任务是遍历该对象并访问每个节点,创建另一个等效对象,其中包含那些与之前相同父对象具有相同键(和级别)的英文字符串的翻译文本。使用递归进行翻译是有效的,但是在Promise内部它从未返回最终翻译的对象。尽管没有错误。
注意:Translate现在可以再次使用。我使用了这个npm模块。 google-translate-api
var obj = {
"MENU": {
"NODE": "Wait for her",
"RESPONSE": {
"ATTR": "We'll meet again",
"SEMANTICS": "The Dark Knighthood"
}
},
"NODES": {
"STANDARDLIBRARY": {
"SERVER": "Never say never again",
"CATEGORIES":{
"INFOPROTECTION":"Infoprotection",
"DATAMOTION":"Data In Motion",
"LOGGING":"Loggin is key to debugging",
"VERACITY": "Help me understand the best I can",
"VARIETY": "Silver surfer"
}
}
}
};
代码:
const iterateAttributesAndParseJSON = (o) => {
return new Promise(
function (resolve, reject) {
for(var a in o) {
if (typeof o[a] == 'object'){
iterateAttributesAndParseJSON(o[a])
}else{
if( o[a] != '' ) {
translate(o[a], {from: 'en', to: 'nl'}).then( res => {
//return jsonObj[a]=res.text;
jsonObj[a]=res.text;
//console.log(jsonObj);
resolve(jsonObj);
}).catch(err => {
console.error(err)
reject(err);
});
}
}
}
}
);
}
iterateAttributesAndParseJSON(obj).then(asd => { console.log(`Resolved:`, asd) }, err => console.log(err))
注意:Translate现在可以再次使用。我使用了这个npm模块。 google-translate-api