- base - базовая часть URL, может представлять из себя как base, так и origin
- pathname - путь, на который будет происходить запрос
- searchParams - любое значение, соответствующее интерфейсу URLSearchParams
makeUrl('http://server.com/api/', 'users', '?search=Alex')
makeUrl('http://server.com/', 'api/users', [['search', 'Alex']])
makeUrl('http://server.com/apii/', '/api')
Дано:
- идентификатор, хранящий текущее состояние запроса,
- функция, изменяющая значение в идентификаторе на переданное,
- функция, выводящая текст для переданного состояния.
let networkState = null,
setNetworkState = (value) => ((networkState = value), networkState),
getMessage = (state) => {
switch (state) {
case true:
return 'Data is [Loading]'
case false:
return 'Data is [Loaded]'
default:
return `Message for state "${state}" is not defined`
}
}
Необходимо выполнить запрос до https://jsonplaceholder.typicode.com/todos
, используя функцию из предыдущей задачи, запросив первые 10 элементов коллекции. Размер запрашиваемой коллекции задаётся при помощи поискового параметра_limit
.
Несколько требований, касательно отслеживания состояния запроса:
- при выполнении запроса, необходимо установить состояние "Загружается",
- по его завершении изменить состояние на "Загружено",
- также отловить ошибку и изменить состояние на "Ошибка",
Дополнительно:
- указать изначальное состояние, когда ничего не происходит,
- отловить состояние пользовательской отмены запроса (cancellation)
Ещё:
- предложить и реализовать решение хранения сообщений для разных
locale
, к примеру:ru
иen
- выполнить частичное применение, используя функцию
makeUrl
, получив удобный интерфейс получения ссылок дляpathname
, не передаваяbase
каждый раз.