Портативный JavaScript для HTTP-запросов - PullRequest
2 голосов
/ 14 марта 2019

Можно ли написать код JavaScript для выполнения HTTP-запросов таким образом, чтобы один и тот же код мог использоваться в нескольких средах выполнения с подходящей служебной библиотекой? В этом случае было бы желательно, чтобы код мог работать с node.js, Google App Script и как расширение Google Chrome или приложение ChromeOS.

Проблема в том, что эти разные среды выполнения имеют разные виды API и разные возможности для адаптации стилей программирования. App Script предоставляет URLFetchApp, который является синхронным. Chrome и другие браузеры поддерживают XMLHttpRequst, который является асинхронным. Node.js поддерживает как асинхронное, так и синхронное программирование, и различные стили можно комбинировать, например, с помощью волокон. Однако волокна не поддерживаются в других средах выполнения. С другой стороны, Google App Script, похоже, не поддерживает подключение асинхронного кода с помощью async / await.

Кажется, что невозможно написать код, который поддерживает все эти среды выполнения, без какой-либо предварительной обработки кода.

1 Ответ

1 голос
/ 14 марта 2019

Это возможно, выполнив следующие действия:

  • При обслуживании абстракции HTTP-запроса вы должны проверить, какие методы HTTP предоставляются в текущей среде
  • Нормализация запроса на импорт нормализована (IE всегда асинхронен и всегда возвращает обещание)
  • Абстракция запроса должна обеспечивать тот же интерфейс для его функций (GET / POST / DELETE / PUT / PATCH)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...