Каковы все обещания? - PullRequest
       16

Каковы все обещания?

15 голосов
/ 06 января 2012

Я не понимаю, что каждый обещает.

Я вижу, что мне нужно вернуть объект или пользователя обещания, но что такое обещание Everyauth?

1 Ответ

26 голосов
/ 06 января 2012

Это полезно, когда у вас есть функция, которая выполняет аутентификацию, но делает это асинхронно.Вы не можете напрямую возвращать информацию о пользователе из функции (потому что вам нужно ждать срабатывания обратного вызова), поэтому вместо этого вы возвращаете обещание .Это специальный объект, который действует как «заполнитель» для того, что в конечном итоге будет заполнено пользовательской информацией, когда асинхронный запрос завершится.

Пример из документации :

function (session, accessToken, extra, oauthUser) {
  var promise = this.Promise();
  asyncFindUser( function (err, user) {
    if (err) return promise.fail(err);
    promise.fulfill(user);
  });
  return promise;
}

Это означает, что вызывающий контекст может продолжать выполнять работу вплоть до тех пор, пока ему действительно не понадобится эта пользовательская информация (и в то же время, пока асинхронный запрос завершается);на этом более позднем этапе придется подождать, если пользовательская информация еще не будет доступна.Вы можете думать об этом как об очень конкретном случае создания и объединения потоков.

" Promise " - это общий термин, который охватывает такую ​​функциональность во всех видах языков и контекстов:

В информатике будущее, обещание и задержка относятся к конструкциям, используемым для синхронизации в некоторых параллельных языках программирования.Они описывают объект, который действует как прокси для результата, который первоначально не известен, обычно потому, что вычисление его значения еще не завершено.

...