Дополнительно
Какое преимущество дает использование $timeout в AngularJS вместо window.setTimeout?
У меня было предложение реализовать такой таймаут:
$timeout(function() {
// Loadind done here - Show message for 3 more seconds.
$timeout(function() {
$scope.showMessage = false;
}, 3000);
}, 2000);
};
Может ли кто-нибудь сказать мне, в чем причина / преимущество использования этого, а не использования setTimeout?
50
3
Основными словами
$timeout
относится к angularjs, аsetTimeout
- к JavaScript.Если вы все еще думаете использовать
setTimeout
, то вам нужно вызвать$scope.$apply()
послеВ качестве примечания
Я предлагаю вам прочитать Как мне "думать в AngularJS", если у меня есть опыт работы с jQuery? пост
и AngularJS: используйте $timeout, а не setTimeout
Пример 1: $timeout.
Пример 2: setTimeout (та же логика)
Demo [Fiddle][3]
$timeout также возвращает обещание
JS
HTML
$timeout также запускает цикл дайджеста
Предположим, что у нас есть сторонний код (не AngularJS), например, плагин Cloudinary, который загружает некоторый файл и возвращает нам 'progress' процентный коллбэк.
Мы хотим обновить наш UI aka
$scope.file = file_;
.Так что пустой
$timeout
сделает за нас эту работу, он запустит цикл дайджеста и$scope.file
, обновленный 3d-стороной, будет повторно отображен в GUIAngularJS изменяет обычный поток JavaScript, предоставляя свой собственный цикл обработки событий. Это разделяет JavaScript на классический и контекст выполнения AngularJS. Только те операции, которые применяются в контексте выполнения AngularJS, получат преимущества от привязки данных AngularJS, обработки исключений, просмотра свойств и т. д.
Благодаря использованию сервиса AngularJS $timeout, обернутая функция
setTimeout
будет выполняться в контексте выполнения AngularJS.Для получения дополнительной информации см.