1
私は非同期プログラミングを初めて習得しましたが、現在この簡単な作業で立ち往生しています。私はMysql
テーブルを持っています。このテーブルには20kのレコードがあり、すべてのレコードを処理する必要があります。現在のアプローチは、レコードのバッチでループしています。Sequelizeでループする
let limit = 100;
let offset = 0;
sequelize.query(`Select * from abc limit ${limit} offset ${offset}`, {type: sequelize.QueryTypes.SELECT}).then((records) => {
// process
return processResult;
});
したがって、私はwhile
ループのオフセットを増やす必要があります。
while (/*....*/) {
let p = sequelize.query(`Select * from abc limit ${limit} offset ${offset}`, {type: sequelize.QueryTypes.SELECT}).then((records) => {
// process records
return processResult;
});
offset += limit;
}
私の質問は、それを停止するためにwhileループの条件は何ですか? p
は常にPromise
あるので、このように私はあなたがbluebird
Promise
の.each()
を使用することができます停止条件として
はアダムをありがとう、しかし、私は、最大値はありません。 20kは単なる推定値です。それは後でもっと増えます。ループはカーソルのようにし、バッチごとにバッチを移動し、バッチが空の場合はループを停止する必要があります。事はそれがいつ空になるのか分からない –