Так как мне нужно удалить много элементов из DynamoDB, я пишу для forEach и вызываю функцию удаления элемента внутри, как показано ниже, но это достигнет предела емкости (это означает, что мне нужно замедлить, чтобы отправить запрос / запрос на удаление) измой DynamoDB, и я хочу, чтобы он задерживал несколько секунд между каждым вызовом.
arrayOfitems.forEach( item => {
return docClient.delete(params).promise();
});
Я попытался использовать задержку npm https://www.npmjs.com/package/delay, как показано ниже, но он будет выполнен через 2 секунды, затем все равно выполнит все удаление (цикл foreach) вместо ожидания 2 секунд и вызоветудалять каждый раз.
arrayOfitems.forEach( item => {
delay(2000)
.then(() => {
return docClient.delete(params).promise();
});
});
Я слышал, что некоторые люди предлагают использовать Promise.Map или P.Map, но после того, как я их Google, я увидел пример, как показано ниже, и я не уверен, если этоподходит в моем случае.Поскольку я не использую Promise.all или у меня есть множество обещаний, я не знаю, как использовать это в моем случае.Может ли кто-нибудь иметь лучшую идею, чтобы решить эту проблему?
const pMap = require('p-map');
const got = require('got');
const sites = [
getWebsiteFromUsername('sindresorhus'), //=> Promise
'ava.li',
'todomvc.com',
'github.com'
];
const mapper = el => got.head(el).then(res => res.requestUrl);
pMap(sites, mapper, {concurrency: 2000}).then(result => {
console.log(result);
//=> ['http://sindresorhus.com/', 'http://ava.li/', 'http://todomvc.com/', 'http://github.com/']
});