Я должен использовать (большой объем) существующий код в среде Angular 2. Этот код широко использует услугу $timeout
от AngularJS 1.x. В отличие от других других услуг AngularJS 1.x, которые используются в коде, мне сложно найти информацию об эквиваленте Angular 2 для службы $timeout
.
Угловые документы, похоже, не содержат упоминаний о службе с timeout
-something в ее имени. В статье " Обновление от AngularJS" упоминается сценарий, с которым я сталкиваюсь:
Возможно, вам нужен доступ к встроенным сервисам AngularJS, таким как
$location
или$timeout
.
К сожалению, статья на самом деле не объясняет, как получить доступ к этим конкретным службам, так как следующий пример HeroesService
принимает сервис без каких-либо зависимостей, предоставляемых AngularJS 1.x.
Такие статьи, как эта предлагают использовать родную setTimeout
функцию не оправдают возможности $timeout
услуг, либо.
Как я могу воспроизвести функции $timeout
в среде Angular 2?
EDIT: Как было отмечено в ответах, недостатки встроенной функции setTimeout
не имеют значения при использовании Angular 2. В этом случае, если бы у меня был полный $q
от AngularJS 1.x, я мог бы реплицировать функцию $timeout
примерно как это:
function $timeout(fn, delay) {
var result = $q.defer();
setTimeout(function () {
$q.when(fn()).then(function (v) {
result.resolve(v);
});
}, delay);
return result.promise;
}