Зачем использовать отсрочку с новым обещанием

Никогда раньше не использовал defer, но мой агент попросил меня использовать defer с промисами.

На странице отсрочки Mozilla написано, что defer устарело и больше не должно использоваться. Но на той же странице есть пример.

Мой вопрос: зачем использовать defer с обещанием? В чем преимущество кода ниже, только писать меньше кода? Вместо этого я должен определить новое обещание?

export function defer () {
  const deferred = {}
  deferred.promise = new Promise((resolve, reject) => {
    deferred.resolve = resolve
    deferred.reject = reject
  })

  return deferred
}

И код, который его использует:

export async function waitForPredicate (peer, path, predicate, cancelToken) {
  const deferredFetcher = defer()
  ...
  let result = predicate(data)
  if (result) {
    deferredFetcher.resolve(result)
  }
})

person Rasim AVCI    schedule 22.01.2018    source источник
comment
Кто твой агент?   -  person Bergi    schedule 22.01.2018
comment
Я не могу назвать имя своего агента, но оно большое. На самом деле я не спрашиваю разницу между defer().promise и Promise. Я спрашиваю, зачем использовать отсрочку старого стиля для обещания.   -  person Rasim AVCI    schedule 23.01.2018
comment
Прошу сменить агента - он не понимает обещаний :-)   -  person Bergi    schedule 23.01.2018
comment
Я так не думаю, он мастер в этом. Я не писал всю историю. Существует гонка обещаний, и одно из них — обещание тайм-аута. также есть функция tagPromise. Должна быть какая-то причина, по которой люди все еще используют его.   -  person Rasim AVCI    schedule 23.01.2018


Ответы (1)


До стандартизации шаблона ES6 Promise deferreds были шаблоном/представлением в Promise, которое может изменять состояние.

person Daniel A. White    schedule 22.01.2018
comment
Это не имеет ничего общего со стандартизацией ES6. - person Bergi; 22.01.2018
comment
@Bergi Берги, я пытаюсь дать здесь исторический контекст. - person Daniel A. White; 22.01.2018
comment
Иногда требуется отложить, когда вы используете их в другом классе, и вам не нужно использовать обещание. Я имею в виду, что у вас уже есть новое обещание в объекте отсрочки, и вы можете использовать его, когда захотите, и вы также можете использовать разрешение и отклонение в качестве параметров внутри кода. - person Rasim AVCI; 26.01.2018