У меня есть следующая функция, которая должна возвращать Promise
после того, как ВСЕ уведомления были успешно / неудачно отправлены:
sendNotifications : function(notificationArray, successCallback, stats){
return notificationArray.reduce((acc, x)=>{
return Promise.all([
notificationUtil.sendNotification(x)
.then(
function() {
successCallback(x);
}
)
.catch(e=>{
//handle failure...
}),
new Promise(resolve => setTimeout(resolve, 1000))//Was thinking it will delay the sendNotification calls but it hasn't.
])
}, Promise.resolve());
},
Вот метод notificationUtil.sendNotification(x)
:
sendEmail: sendNotification (options) {
return new Promise(function(resolve,reject){
someNPM.sendNotification(function(data) {
if(!data.error_code && !data.is_error)
resolve(true);
else
{
reject(false);
console.error("ERROR: " + data.message);
}
},
options);
});
}
Функция someNPM.sendNotification
от внешнего NPM, и она не возвращает Обещание, следовательно, я обещала это.
Проблема в том, что я ожидала задержку 1000ms
между notificationUtil.sendNotification(x)
вызовами, но дело не в этом, и sendNotification(x)
вызывается сразу для всех элементов из notificationArray
Может кто-нибудь определить проблему?
РЕДАКТИРОВАТЬ: Чтобы было ясно, мое требование состоит в том, чтобы ждать 1000 мсмежду уведомлениями