УСПОКОИТЕЛЬНЫЙ дизайн: наборы подкачки страниц

Они ведут себя по-разному; Ваш первый пример выполняется в течение двух секунд, а второй - в течение трех секунд.

В первом случае медленное и быстрое разрешено начинать параллельно; во втором случае вы заставляете первое обещание выполнить еще до того, как начнете второе.

Реальный сценарий использования множества обещаний без await их заключается в том, если вы хотите получать несколько URL-адресов параллельно.

// assuming getUrlContents() returns a Promise
let promises = [
    getUrlContents('http://url1.com/'),
    getUrlContents('http://url2.com/'),
    getUrlContents('http://url3.com/')
];

// all URLs are currently fetching

// now we wait for all of them; doesn't particularly matter what order
// they resolve
let results = [
    await promises[0],
    await promises[1],
    await promises[2]
];

Еще один вариант этого будет выполняться гораздо медленнее (и, как правило, не так, как вы хотите, если вам действительно НЕ нужно содержимое одного, прежде чем вы сможете перейти к следующему):

let a = await getUrlContents('http://url1.com/')
let b = await getUrlContents('http://url2.com/')
let c = await getUrlContents('http://url3.com/')
let results = [ a, b, c ];
[119 ] Загрузка для b не начнется, пока не завершится a и т. Д.

14
задан Koen Bok 1 February 2009 в 15:41
поделиться

3 ответа

То, на что похож URI, не является самой важной частью. О чем необходимо думать, вместо этого то, как это представлено пользователю. Страница должна, например, иметь ссылку на "следующую" страницу и другую ссылку на "предыдущую" страницу (если существует один). Смотрите на Подкачку страниц Канала RFC 5005 и Архивацию

13
ответ дан 1 December 2019 в 12:53
поделиться

С моим ограниченным пониманием того, что REST о, затем следующее могло бы быть самым успокоительным.

GET /resource/?page=<pageenr>&asof=<datetime>

Так как содержание представления неожиданно никогда не изменилось бы, и кэширование могло использоваться.

Но на самом деле отвечать на Ваш вопрос, я думаю, что страница параметра является предпочтительным методом.

4
ответ дан 1 December 2019 в 12:53
поделиться

Я пошел бы с опцией (2). Почему?

  1. Можно позже добавить параметр размера страницы к запросу, таким образом, клиент может указать размер страницы.
  2. В случае, если никакой параметр страницы не был указан, можно просто возвратить первую страницу (значение по умолчанию). Во многих случаях Вы, клиенту, возможно, понадобилась бы только первая страница, таким образом, она упрощает протокол между клиентом и сервером.
4
ответ дан 1 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: