Правило of Three является правилом для C ++, в основном говоря
Если вашему классу требуется любой из
- конструктор копирования,
- оператор присваивания,
- или деструктор,
определенно, тогда, вероятно, все три из них .
blockquote>Причины этого в том, что все три из них обычно используются для управления ресурсом, и если ваш класс управляет ресурсом, ему обычно необходимо управлять копированием, а также освобождать.
Если для копирования ресурса, который ваш класс управляет, нет хорошей семантики, тогда подумайте о том, чтобы запретить копирование, объявив (не , определяющий ) конструктор копирования и оператор присваивания как
private
.(Обратите внимание, что предстоящая новая версия стандарта C ++ (которая является C ++ 11) добавляет семантику перемещения в C ++, что, скорее всего, изменит правило из трех. Однако я слишком мало знаю об этом напишите раздел C ++ 11 о правиле трех.)
rxjs6
https://github.com/ReactiveX/rxjs/issues/2868#issuecomment-360633707
Не выполнять труба. Он находится по объекту Observable по умолчанию.
blockquote>Observable.of('foo').toPromise(); // this
rxjs5
import 'rxjs/add/operator/toPromise'; import 'rxjs/add/operator/map'; ... this._APIService.getAssetTypes() .map(assettypes => { this._LocalStorageService.setAssetTypes(assettypes); }) .toPromise() .catch(err => { this._LogService.error(JSON.stringify(err)); });
вам действительно не нужно это делать ...
import 'rxjs/add/operator/first';
this.esQueryService.getDocuments$.first().subscribe(() => {
event.enableButtonsCallback();
},
(err: any) => console.error(err)
);
this.getDocuments(query, false);
first () гарантирует, что блок подписки вызывается только один раз (после чего он будет как если бы вы никогда не подписались), точно то же, что и обещания, тогда ()
наблюдаемый может быть преобразован в обетование следующим образом:
let promise=observable.toPromise();