【发布时间】:2016-11-22 01:49:48
【问题描述】:
我有这个 JS 对象:
let setOfWords = {
"nouns": [
"work",
"construction",
"industry"
],
"verbs": [
"work"
],
}
我正在使用调用 REST 资源的 google translate API,因此我需要等待每个翻译的响应,然后解析相同的对象结构,但使用翻译后的单词。
function translateByCategory(){
let translatedObj = {};
return new Promise(function(resolve, reject){
Object.keys(obj).forEach(function(category){
if (translatedObj[category] == undefined) {
translatedObj[category] = [];
}
setOfWords.forEach(function(word){
google.translate(word, 'es', 'en').then(function(translation){
translatedObj[category].push(translation.translatedText);
});
});
// return the translatedObj until all of the categories are translated
resolve(translatedObj);
});
});
}
【问题讨论】:
-
创建一个promise数组并使用
Promise.all(两次,即每个循环)。不要使用new Promise。 -
@Bergi 你能发布一个代码示例吗?还是看不懂
Promise.all() -
顺便说一句,您确定要
pushword而不是translation?
标签: javascript promise google-translate