Я пишу программу, которая выполняет много вычислительных операций, поэтому я хочу, чтобы они запускались одновременно, n одновременно. Я пытаюсь понять, что я делаю неправильно в отношении выполнения своих обещаний. Программа не останавливается на моем ожидании и проходит через все еще выполнение некоторых вычислений. Я написал этот пример программы, основанный на тех же принципах:
import * as fs from 'fs';
import * as path from 'path';
import * as bluebird from 'bluebird';
async function main(): Promise<void> {
const numberOfFiles = 250;
const Test_Directory = 'testDirectory';
fs.mkdirSync(Test_Directory);
const testArray: string[] = [];
for (let i = 0; i < numberOfFiles; i++) {
testArray.push(i.toString());
}
const result = await bluebird.map(testArray, item => {
return new Promise( resolve => {
fs.writeFile(path.join(Test_Directory, `file${item}.txt`), item, () => {});
console.log(`file${item}.txt`);
resolve();
});
}, {concurrency: 10});
console.log('done');
//....
// do some stuff predicated on the above
Я ожидаю, что ожидание заблокирует мой код до тех пор, пока не будут завершены операции в promise.map. В настоящее время кажется, что это происходит, как только запускается «пакет» параллельных операций. Заранее спасибо за помощь.