Это полезно, когда у вас есть функция, которая выполняет аутентификацию, но делает это асинхронно.Вы не можете напрямую возвращать информацию о пользователе из функции (потому что вам нужно ждать срабатывания обратного вызова), поэтому вместо этого вы возвращаете обещание .Это специальный объект, который действует как «заполнитель» для того, что в конечном итоге будет заполнено пользовательской информацией, когда асинхронный запрос завершится.
Пример из документации :
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 " - это общий термин, который охватывает такую функциональность во всех видах языков и контекстов:
В информатике будущее, обещание и задержка относятся к конструкциям, используемым для синхронизации в некоторых параллельных языках программирования.Они описывают объект, который действует как прокси для результата, который первоначально не известен, обычно потому, что вычисление его значения еще не завершено.