Await / Async不在for循环中工作

时间:2018-02-05 19:40:07

标签: javascript node.js for-loop promise async-await

我想要批量处理批量数据,如下面的代码所示。在这种情况下,单个批次只是一个包含值的数组。因此函数sendInBatches()需要一个数组数组作为输入。

asyncMethod(batch){
    return new Promise((resolve) => {
        setTimeout(
            () => {
                console.log('x');
                resolve();
            }
            , 1000,
        );
    });

}

以下是asyncMethod()的代码。请注意,asyncMethod()实际上并没有对提供的参数执行任何操作。它只返回一个在1秒后解析的Promise。

sendInBatches([[1,2,3],[4,5,6],[7,8,9]]).then(console.log('done'));

我尝试运行这样的代码:

done
x
x
x

这提供了输出:

x
x
x
done

虽然我希望它返回:

group_by_at

我无法弄清楚这里出了什么问题,你们有什么想法吗?

1 个答案:

答案 0 :(得分:1)

解决:

  

您将console.log("done")直接传递给.then,而不是直接传递给.then(() => console.log("done"))   功能的一部分。所以它会立即评估它。相反,试试吧   words = word_tokenize(message.replace('\n',' ')) word_list = ['amazon', 'b'] filtered_words = [x for x in words if x in word_list] 你应该得到你的结果   想。

请参阅CRice的comment