Javascript:如何确保在forEach循环结束后才会发生某些事情?

时间:2016-10-20 05:40:37

标签: javascript foreach node-mysql

我在数据库中有一个表,其中包含bad_words列表和good_words列表,用于替换输入字符串中的这些bad_words。这就是我的做法,参数comment将针对bad_words进行测试,并替换为相应的good_words

function testComment(comment) {
    var words = comment.split(" ");
    var resultString = "";
    words.forEach(function(word){
        connection.query('select good_words from words where bad_words = ' + connection.escape(word), function(err, result){
            if(err){
                console.log(err);
                return;
            }
            if(result.length != 0){
                resultString = comment.replace(word, result[0].good_words));
            }
        });
    });
   return resultString;
}

但是,这只返回空字符串(原始初始值)。这是因为函数在forEach完成之前返回。我如何确保1)我正在修改resultString而不是在forEach循环中创建新实例?我需要使用this.resultString = ...吗?
2)如何在forEach执行完毕后才返回?

0 个答案:

没有答案