Вот один из подходов, который вы можете попробовать:
import { Component } from '@angular/core';
import { interval } from 'rxjs';
import { take } from 'rxjs/operators';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
name = '';
ngOnInit() {
interval(500)
.pipe(
take(5)
)
.subscribe(_ =>
this.name += 'a'
);
}
}
демо https://stackblitz.com/edit/angular-6pkbhk?file=src%2Fapp%2Fapp.component .ts
В качестве альтернативы вы все еще можете использовать простой старый метод обещаний, который более близко соответствует вашему первоначальному подходу,
import { Component } from '@angular/core';
import { interval } from 'rxjs';
import { take } from 'rxjs/operators';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = '';
ngOnInit() {
this.sleep(200)
.then(() => this.title = 'a')
.then(() => this.sleep(200))
.then(() => this.title += 'a')
.then(() => this.sleep(200))
.then(() => this.title += 'a')
.then(() => this.sleep(200))
.then(() => this.title += 'a')
.then(() => this.sleep(200))
.then(() => this.title += 'a')
// same as
/* let promise: any = this.sleep(delay)
.then(() => this.title = 'a');
for (let i = 0; i < 4; i++) {
promise = promise
.then(() => this.sleep(delay))
.then(() => this.title += 'a')
} */
}
sleep(milliseconds) {
let resolve;
let promise = new Promise((_resolve) => {
resolve = _resolve;
});
setTimeout(() => resolve(), milliseconds);
return promise;
}
}
demo https: // stackblitz. ком / редактировать / угловой d8ur5y? файл = ЦСИ% 2Fapp% 2Fapp.component.ts
Я рекомендовал бы установщик 1 МБ или подход "bootstrapper". Если Вы не идете лезвие, большинство машин Windows там теперь имеет 2,0 платформы, уже установленные на них, и получение приложения, загруженного и установленного быстро, обычно находится на большинстве пользовательских умов.
Разве Вы не можете обнаружить, если платформа установлена, когда они загружают и подают соответствующий установщик? Таким образом, пользователь, который не имеет, не оштрафован, и пользователь, который не имеет его, получает полную установку.
Как в стороне, наше приложение является маленькой загрузкой и динамично загружает платформы, в которых оно нуждается, но мы не нацелены на "коммерческую" аудиторию. Наш - намного больше нишевого приложения, таким образом, Ваш YMMV.
Второй. Клиент хочет все функционирование, не помещая руку.
Обычно я нахожу все меньше и меньше важным связать платформу.NET моими приложениями. По крайней мере, для 2,0, поскольку это чаще всего устанавливается.
Я сказал бы, хотя это для 3,5, поскольку это не обязательно установлено, могло бы быть лучше включать это с загрузкой для простоты использования.
Я думаю Adobe Acrobat, которая имеет загрузку установщика на 1/2 Мбита для начальной загрузки намного большей программы. Acrobat произошел там как один из наиболее загруженных пакетов программного обеспечения там, и они все еще чувствуют себя вынужденными уменьшить размер их начальной загрузки. Microsoft использует этот подход к некоторым их большим пакетам также.
Однако вещь с обоими из тех примеров состоит в том, что они обеспечивают намного более хороший опыт при загрузке полного приложения, чем стандартные пакеты установки Visual Studio допускают загрузку платформы.
В то время как я лично ненавижу загрузчики, которые составляют только 0,5 МБ, которые загружают фактическое устанавливаемое содержание позже, потому что Вы не можете заархивировать фактические загруженные файлы установки, я должен был бы сказать, что в этом случае предпочитаю установщик 1 МБ. Время выполнения .NET достаточно распространено, которым это должно быть найдено на большинстве компьютеров. И если это не, это должно прибыть прямо из Microsoft, вместо того, чтобы пытаться сохранить актуальную версию платформы .NET в Вашем установщике. Другая опция, которая распространена с Java IDE, такие как Eclipse и Netbeans, состоит в том, чтобы иметь и версию, которая не идет с J2SDK и версией, которая действительно включает актуальную версию J2SDK.
У меня была бы одна установка помещенной один и точно одна часть программного обеспечения на моей машине. Когда мы развертываемся нашим клиентам, мы хотим смочь управлять установкой зависимостей сами.
Править: Обратите внимание, что я говорю о корпоративной среде, где мы централизованно справляемся с развертыванием программного обеспечения на наших клиентах. Я также чувствую этот путь ко мне, но я классифицировал бы меня как продвинутого пользователя, и я вижу встречный аргумент в пользу пользователя среднестатистического американца.
У Scott Hanselman недавно было действительно хорошее сообщение в блоге, где он говорил о связывании платформы .NET. Одна вещь также отметить состоит в том, что .net 2.0 был включен в Windows XP SP2, таким образом, актуальная машина должна иметь, по крайней мере, это
Я лично предпочел бы знать, что это устанавливало .NET.
Большинство нетехнических людей не будет заботиться и будет раздражаться из-за установщика, который просит, чтобы они нажали больше раз, чем необходимый (Мыслительный процесс пошел бы, "Устанавливают .NET? Что такое .NET? Вы спрашиваете меня, потому что я должен установить его, или потому что я не был должен? Позволяет выбирают случайную опцию" у большого количества людей.)
Зарегистрируйте зависимости от платформы и дайте пользователю дополнительное средство установки ее, если у них уже нет ее во время Вашего процесса установки. Это особенно важно, если Вы поставляете через Интернет так или иначе. Если Вы поставляете на CD/DVD, затем любой ценой включают распространяемый файл с Вашим кодом в случае, если у пользователя нет доступа к нему через сеть.
Проверьте smallestdotnet, а также новый клиентский материал профиля (в зависимости от Вашей версии)
Так или иначе удостоверьтесь, что Вы предупреждаете пользователя, если Вы идете с опцией загрузки. Ничто не является более раздражающим, чем быть столь счастливым, что новая программа, которую Вы устанавливаете в своем не-Интернете, соединилась, машина является столь маленькой, и затем узнающий, что Вы не вполне сделаны...