Объединение результатов нескольких асинхронных загрузчиков

#angularjs #angular-translate

#angularjs #angular-перевести

Вопрос:

Текущее унаследованное мной приложение использует Angular 1.x и angular-translate, в которых используется статический загрузчик файлов:

     $translateProvider
        .useStaticFilesLoader({
            prefix: '/bundles/backend/js/global/translates/locale-cms-',
            suffix: '.json'
        })
 

Мне нужно загрузить дополнительный ресурс /api/1/translations?lang=en (например, используя useUrlLoader ), и я хотел бы знать, возможно ли это, поскольку я не могу заставить его работать (я читаю документы, имейте в виду)… Нужно ли мне создавать пользовательский загрузчик, который ожидает результата обоих HTTP-запросов и объединяет результаты, или это можно сделать с помощью существующего оборудования?

Предпочтительно, я бы просто хотел .useUrlLoader привязать биты и автоматически запустить два запроса, а их результаты будут объединены без того, чтобы я делал что-то еще, кроме вызова forceAsyncReload(true) .

Я выполнил начальный POC с использованием синхронного .translations() API, который доказал, что использование загрузчика синхронизации, за которым следует асинхронный загрузчик, работает так, как задумано; объединение результатов. Это вселило в меня надежду, но мне не очень повезло с асинхронным битом.

Комментарии:

1. Если я вас хорошо понимаю, это обещания, верно? Вы можете использовать Promise.all developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…

2. Да, я знаю, что такое обещания 🙂 (хотя это предварительно стандартный тип обещания jQuery.) Но то, что вы неявно предлагаете, — это повторно реализовать загрузчик url и статический загрузчик файлов и вызвать их за пользовательской реализацией. Я уже рассматривал это, но это довольно много работы, поэтому мне было интересно, могу ли я использовать существующий API без переделки загрузочной части при использовании двух асинхронных загрузчиков.