Уважаемы гуру, возможно кто-нибудь сможет ответить мне на вопросы.
return new Promise(function(resolve, reject){
Object.keys(schemaPaths).forEach(function(path){
switch(schemaPaths[path].instance){
case 'String' :
cs(schemaPaths[path], data[path]).catch(function(e){
console.error(e);
reject(e);
});
break;
default :
reject('default');
break;
};
});
resolve()
});
Функция
cs
возвращает Promise, точнее Promise.reject(). Далее она выводит в консоль ошибку и делает дальше reject.
Проблема начинается здесь. Лог в консоль записывается, а reject выполняется не внутри
case 'String' :
, a почему-то сначала переходит в
default.
и там уже выполнит reject().
Это был вопрос №1.
Дальше больше. Если
убратьdefault :
reject('default');
break;
};
Останется вот такая штука:
return new Promise(function(resolve, reject){
Object.keys(schemaPaths).forEach(function(path){
switch(schemaPaths[path].instance){
case 'String' :
cs(schemaPaths[path], data[path]).catch(function(e){
console.error(e);
reject(e);
});
};
});
resolve()
});
И тут тоже самое, (Лог -- есть, reject -- нет ). Только на этот раз выполниться resolve().
Переписал всё на
If-Else
всё работает как надо.Но вопрос остался, а решения нет.
Возможно кто-нибудь знает с чем связано такое поведение, и как это можно вылечить?