Существует много операций ввода-вывода - запросы к другим серверам, доступ к базе данных, доступ к файлам - которые являются или должны быть обещаниями.Однако для инкапсуляции вызовов более высокого уровня, которые могут выполнять запросы к серверу (например, в Google recaptcha или Cloudinary), вызовы базы данных (например, PostgreSQL, Mongo, ReDis) или просто чтение файла.
В идеале этоформат:
functionCall()
.then(FC1)
.then(FC2)
.catch()
Вызывающему родителю не нужно знать о внутренних особенностях вызова, или, следовательно, или предложениях catch.Они должны быть, насколько я понимаю, похожи на:
highLevelFuncionCall()
.then(()=>{
functionCall() //and all its then/catch clauses
}
.then(HLFC1)
.then(HLFC2)
.catch()
Однако, похоже, это не сработает.Обработка переходит к HLFC1 без ожидания FC1 и FC2, даже если сначала требуется их обработка.
Как это можно структурировать, чтобы зависимые обещания были невидимы для вызывающего абонента более высокого уровня?
Спасибо,
Дэвид