Javascript promise : Iterate over all object keys arrays and then resolve

标签 javascript promise google-translate

我有这个 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.all() 来等待所有 promise 的实现(或第一次拒绝):

var translateRequests = [];

Object.keys(setOfWords).forEach(function(category){
        setOfWords[category].forEach(function(word){
            translateRequests.push(google.translate(word, 'es', 'en'));
        });
    });
});

Promise.all(translateRequests).then(function(translateResults){
    //do something with all the results
});

查看文档:Promise.all()

关于Javascript promise : Iterate over all object keys arrays and then resolve,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40732541/

相关文章:

javascript - jquery 捕捉到窗口顶部

javascript - 你如何在 React Native 中创建一个清晰的按钮

javascript - Angular 1.6 组件绑定(bind)返回未定义

react-native - 如何在 Fetch 的 promise 链之外获取响应数据?

python - JSONDecodeError 在 Python3 中使用谷歌翻译 API

javascript - 需要导入语法

javascript - KnockoutJS 和 PubSub 在 View 之间更新可观察数组

javascript - 我如何等待 Angular4 HttpClient 响应?

angularjs - Angular promise 在函数内部而不是在外部解析

api - 离线语言翻译API